Hola Comunidad,
En este artículo, os presentaré mi aplicación iris-DataViz.
iris-DataViz es una aplicación de análisis y visualización de datos exploratorios basada en Streamlit que aprovecha la funcionalidad de IRIS embebido en Python y SQLAlchemy para interactuar con IRIS, así como la biblioteca de Python PyGWalker para el análisis de datos y la visualización de datos. PyGWalker (Python Graphic Walker) es una biblioteca de visualización de datos interactiva creada para Python, que tiene como objetivo llevar la facilidad y funcionalidad de la visualización al estilo de Tableau con arrastrar y soltar a los entornos de Python.
Características de la aplicación
- Visualización de arrastrar y soltar
- Manipulación y limpieza de los datos dentro de la visualización
- Amplia gama de tipos de gráficos:
- Exploración interactiva de datos
- Agregación y agrupación interactivas.
- Visualizaciones exportables
- Resumen automático de datos
- Campos calculados / computados
- Soporte para datos categóricos, numéricos y temporales
- Leyendas y filtros interactivos
- Generación interactiva de informes
- Soporte de datos geoespaciales
Vista general de la aplicación
La aplicación ya incluye importados datos relacionados con coches. Para ver los datos, navegad al Portal de Gestión de SQL y visualizad los datos utilizando el siguiente comando SQL:
SELECT
Make, Model, Year, EngineFuelType, EngineHP,
EngineCylinders, TransmissionType, Driven_Wheels,
NumberofDoors, MarketCategory, VehicleSize,
VehicleStyle, highwayMPG, citympg, Popularity, MSRP
FROM DataViz.CarsInfo
SQLSQL
Para ejecutar la aplicación, navegad a http://localhost:8051. Seleccionad el espacio de nombres, el esquema y la tabla. Haced clic en la pestaña de Datos para analizar los datos.
Seleccionad la pestaña de Visualización, arrastrad las columnas deseadas al eje X y al eje Y, y seleccionad el tipo de gráfico que queráis.
Fragmento de código de la aplicación
A continuación, se presenta el código de ObjectScript invocado desde Python embebido para obtener los espacios de nombres de IRIS:
Class dc.DataViz.Util Extends %RegisteredObject
{
ClassMethod getNameSpaces() As %String
{
//init sql statement
set statement=##class(%SQL.Statement).%New()
//Prepare Class Query
set status=statement.%PrepareClassQuery("%SYS.Namespace","List")
//Check the Error
if $$$ISERR(status)
{
do $system.OBJ.DisplayError(status)
}
//Execute the statement
set resultset=statement.%Execute()
set results = "1"
while resultset.%Next() {
//zw resultset
if results = "1" {
set results = resultset.%Get("Nsp")
}
else
{
set results = results _ "," _ resultset.%Get("Nsp")
}
}
return results
}
}
ObjectScriptObjectScript
Código de Python embebido que invoca el código de ObjectScript:
import iris
ns = iris.cls('dc.DataViz.Util').getNameSpaces()
namespaces = ns.split(",")
PythonPython
El código a continuación obtendrá la lista de esquemas y tablas:
def get_schema(self):
#Establish IRIS Connection
with self.engine.connect() as conn:
with conn.begin():
sql = text("""
SELECT distinct TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
order by TABLE_SCHEMA
""")
results = []
try:
#Fetch records into results variable
results = conn.execute(sql).fetchall()
schemas="0"
for element in results:
if schemas == "0":
schemas = element[0]
else:
schemas = schemas+","+element[0]
except Exception as e:
print(e)
return schemas
def get_tables(self,schema):
#Establish IRIS Connection
with self.engine.connect() as conn:
with conn.begin():
sql = text("""
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_SCHEMA = :schema
order by TABLE_NAME
""").bindparams(schema=schema)
results = []
try:
#Fetch records into results variable
results = conn.execute(sql).fetchall()
tables="0"
for element in results:
if tables == "0":
tables = element[0]
else:
tables = tables+","+element[0]
except Exception as e:
print(e)
return tables
PythonPython
Para más detalles, por favor, visitad la página de la aplicación iris-DataViz en Open Exchange.
Gracias.