Artículo
· 8 oct, 2024 Lectura de 4 min

iris-DataViz: Aplicación de análisis y visualización de datos al estilo de Tableau con función de arrastrar y soltar

image

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

image

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.


image

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.
image

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
}
}

Código de Python embebido que invoca el código de ObjectScript:

  import iris
  ns = iris.cls('dc.DataViz.Util').getNameSpaces()
  namespaces = ns.split(",")

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

Para más detalles, por favor, visitad la página de la aplicación iris-DataViz en Open Exchange.

Gracias.

Comentarios (0)1
Inicie sesión o regístrese para continuar