La visualización de datos es hoy en día un área clave en el mundo de los datos, donde cada vez tenemos mayores volúmenes de datos que crecen a más velocidad y que son de naturalezas y estructuras muy variadas.

Para las compañías que aspiran a ser data-driven es fundamental tener la capacidad de interpretar y extraer conocimiento de estas ingentes cantidades de datos y aquí la visualización juega un papel fundamental.

Existen multitud de herramientas en el área de la visualización, los grandes proveedores de Cloud como AWS, Google y Azure ofrecen respectivamente Quicksight, Google Data Studio y Power BI. Y existen muchas otras soluciones en la industria con diferentes modelos de licenciamiento y suscripción como Tableau, Qlik, Microstrategy y otras tantas. Cada una de estas soluciones tienen sus propias características en precio, en capacidades, unas están más cercanas al mundo del Business Intelligence otras tienen enfoques más ligeros y todas son muy válidas según el caso de uso.

Sin embargo, en este artículo vamos a profundizar en Apache Superset, una herramienta de visualización única y que difiere de todas las anteriores en un aspecto fundamental, se trata de una herramienta open source bajo el paraguas de la Apache Software Foundation. Superset además es uno de los proyectos de software abierto más activos que está siendo construido y evolucionado por cientos de desarrolladores en todo el mundo.

Esto significa que podemos descargar Superset en segundos desde internet e instalarlo en nuestro PC, en un servidor on-premise o en una instancia en la nube. Adaptando tanto el despliegue como el software a nuestras necesidades.

A continuación, vamos a analizar paso a paso cómo instalar Superset, conectarlo con un sistema de almacenamiento de datos en Cloud como BigQuery y usarlo para crear visualizaciones en minutos.

Instalación

Superset se distribuye como una biblioteca de Python instalable a partir de pip. Sin embargo, es muy recomendable desplegarlo como contenedores docker, por ejemplo, a través de docker compose o de helm en kubernetes, ya que un despliegue completo de superset va a requerir de varios elementos como la base de datos, el sistema de cache, el worker, etc.

En este artículo usaremos docker compose para desplegar un superset funcional de forma sencilla. El primer paso será clonar el repo de superset desde GitHub:

$ git clone https://github.com/apache/superset.git

Si queremos instalar algún paquete de Python adicional, como por ejemplo drivers para conectar con alguna base de datos, en este punto debemos de añadir la dependencias al fichero docker/requirements-local.txt para que sean instaladas en tiempo de despliegue. En nuestro caso añadiremos la dependencia con el conector de BigQuery que usaremos más tarde:

$ echo "pybigquery" > docker/requirements-local.txt

En la raíz del repositorio encontraremos un fichero de configuración de docker compose con toda la información necesaria para levantar los diferentes contenedores que requiere superset, así que simplemente ejecutaremos docker compose up con dicho fichero de configuración.

$ docker-compose -f docker-compose.yml up

Tras unos momentos veremos cómo se van levantando los diferentes contenedores e instalando todas las dependencias necesarias. Finalmente, si listamos los contenedores en ejecución deberíamos ver algo así:

$ docker ps --format "table {{.Image}}\t{{.Ports}}\t{{.Names}}"
IMAGE PORTS NAMES
apache/superset:latest 0.0.0.0:8088->8088/tcp superset_app
apache/superset:latest 8088/tcp superset_worker
apache/superset:latest 8088/tcp superset_worker_beat
postgres:10 5432/tcp superset_db
redis:3.2 6379/tcp superset_cache

Superset será ya accesible a través de un navegador web vía HTTP en el puerto 8088. Para acceder nos pedirá un usuario y contraseña que podremos cambiar pero inicialmente ambos serán “admin”.

BigQuery, ¿cómo construimos un dashboard?

Una de las características más interesantes de Superset es la gran capacidad de integración con diferentes sistemas de almacenamiento y bases de datos, algo en constante evolución. En estos momentos existen más de 30 conectores oficiales tanto para servicios cloud como AWS Redshift, Google BigQuery o Snowflake, herramientas open source como Spark, Elasticsearch o PostgreSQL y otros productos propietarios como Oracle, IBM Db2 o Teradata. En la documentación oficial podemos encontrar la lista completa actualizada.

Vamos a ver paso a paso cómo construimos un dashboard en Superset alimentándonos de datos servidos por BigQuery, el servicio gestionado de data warehouse de Google en la nube y ,sin duda, una de las herramientas más potentes del mercado.

Importando los datos

Lo primero que necesitamos son los datos para cargarlos en BigQuery, vamos a usar un dataset interesante en los tiempos que corren que contiene información sobre las diferentes vacunas existentes y en desarrollo para el coronavirus, lo podemos descargar de esta página del Milken Institute. De aquí obtendremos un fichero .csv con información estructura de cada de las más de 200 vacunas en desarrollo.

El siguiente paso será crear un dataset desde la consola de BigQuery y una tabla dentro con la estructura adecuada para cargar nuestro fichero .csv de datos. En este caso, hemos creado el dataset “covid19” y la tabla “vaccines” donde hemos importado directamente el fichero .csv desde la consola de BigQuery. Al ser un fichero pequeño podemos hacerlo de esta manera, si hubiera sido un conjunto mayor de datos podíamos haberlos cargado a través de Google Cloud Storage y en diferentes formatos como Parquet o Avro.

Es importante definir también el esquema de nuestros datos en tiempo de importación, en BigQuery lo haremos con una notación propia en JSON. En este repositorio quedan disponibles tanto los datos originales en CSV como el fichero json con la definición del esquema para BigQuery.

Conectando con BigQuery

Ahora que ya tenemos nuestros datos cargados en BigQuery podemos ver cómo realizar la conexión entre Superset y BigQuery para explotar los datos.

Tendremos que ir de nuevo a Superset y seleccionar el menú Data -> Databases para a continuación añadir una nueva Database. Le daremos el nombre que queramos y la cadena de conexión deberá de ser de la forma bigquery://{project_id} apuntando a nuestro proyecto de Google Cloud.

A continuación añadiremos las credenciales de Google Cloud en el campo “SECURE EXTRA” de la pestaña “SECURITY”, siguiendo la siguiente estructura JSON:

{
    "credentials_info": <contents of credentials JSON file>
}

Donde el contenido del JSON será un fichero que podemos descargar a través de la consola de Google Cloud con las credenciales de la service account para acceder remotamente a BigQuery, en la documentación de Google Cloud podemos ver los pasos detallados de cómo generarlo, tendrá una estructura similar a la siguiente:

{
    "credentials_info": {
        "type": "service_account",
        "project_id": "...",
        "private_key_id": "...",
        "private_key": "...",
        "client_email": "...",
        "client_id": "...",
        "auth_uri": "...",
        "token_uri": "...",
        "auth_provider_x509_cert_url": "...",
        "client_x509_cert_url": "..."
    }
}

Testeamos la conexión y guardamos la configuración. Ahora ya tendremos acceso a los dataset de BigQuery de nuestro proyecto de Google Cloud desde Superset.

Mapeando los datos

El siguiente paso será definir un Dataset en Superset para mapear los datos.

Para ello iremos al menú Data -> Datasets y seleccionaremos la opción de crear nuevo dataset, donde seleccionamos; como base de datos a la conexión a BigQuery que hemos configurado en el paso anterior, como schema el dataset “covid19”, y como tabla la tabla que contiene los datos de las vacunas “vaccines”.

Definiendo nuestro Dashboard

Una vez tenemos nuestro dataset disponible, el siguiente paso es crear nuestros charts. Un chart es un gráfico y se corresponde con el mínimo elemento de visualización disponible en Superset. Un chart puede ser un gráfico de barras, un gráfico de tarta, un mapa de calor o cualquier elemento de visualización de datos más o menos complicado. En la galería de superset podemos encontrar muchos ejemplos.

Para crear un chart, iremos al menu “charts”, seleccionaremos la opción de crear un nuevo chart, elegiremos el dataset de donde leeremos los datos y el tipo de visualización y, a continuación, ajustaremos todos los parámetros sobre cómo acceder a los datos, opciones específicas de la visualización, colores, leyendas y el resto de opciones:

Así podemos ir definiendo varios charts que utilicen diferentes datos y los muestreen con diferentes visualizaciones. Una vez tengamos este conjunto de charts definido pasaremos al siguiente paso: crear un dashboard donde presentar todos nuestros charts.

Para ello iremos al menú de dashboards y crearemos uno nuevo. Un dashboard, realmente, no es más que un “lienzo” vacío donde podemos ir insertando charts en diferentes posiciones, siguiendo una estructura tabular. También podremos ajustar los tamaños de los charts e incluir texto explicativo.

Aquí podemos ver un ejemplo de dashboard con varios charts de diferente tipo que exploran diferentes aspectos de los datos sobre las vacunas en desarrollo que se están recuperando de BigQuery:

En este repositorio dejo disponible una exportación de dicho dashboard que puede ser importado en otra instancia de superset. Si lo importamos en otra instancia, será necesario configurar un dataset de Superset, conectado a BigQuery o a otro sistema de almacenamiento, que contenga la estructura esperada.

A partir de aquí las posibilidades son ilimitadas, el número de charts disponibles enormes y las posibilidades para cargar datos muy amplias. De base, Superset nos incluye algunos ejemplos de dashboards muy completos que nos pueden inspirar como este que contiene datos del Banco Mundial:

O este que incluye algunos charts muy llamativos:

Conclusión

En resumen, Superset es una herramienta open source muy potente, que podemos tener instalada en minutos. En su diseño se ha buscado la simplicidad a la hora de crear visualizaciones atractivas y se ha potenciado la integración con multitud de orígenes de datos así como la posibilidad de extender la herramienta con visualizaciones propias.

Todo su desarrollo se ha basado en componentes y estándares open source.

Sin duda, en este momento, es uno de los proyectos más interesantes y con más visibilidad de la Apache Software Foundation y a medida que está madurando vemos que su uso se va extendiendo a todos los ámbitos. Le auguramos un gran futuro y estamos seguros de que será una herramienta muy útil a la hora de ayudar a nuestros clientes en proyectos de visualización de datos.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.