Tutorial de Knime (I): Iniciación

No puede crearse una comunidad centrada en el dato sin profundizar en las herramientas y el análisis. A lo largo del blog, se ha hablado de herramientas de reporting, de cómo implementar analítica e incluso de cómo unificar datos usando R… Así, la idea de este post es entrar de lleno en el tratamiento de los datos, solo que prestando atención a una herramienta en particular. Igual que con R, libre; pero con una mentalidad totalmente diferente. Mucho más accesible. Hoy os traemos un tutorial de Knime para principiantes.

Knime es una herramienta que funciona mediante nodos. Cada nodo es una interacción con la base de datos. Si quien está leyendo estas líneas ha usado Alteryx o Pentaho, le será totalmente familiar, con las clásicas ventajas que tienen los softwares libres: gratuito y con apoyo de la comunidad. Para las personas que no hayan usado estas herramientas, así se ve una página de inicio (una vez está totalmente configurada). 

Lienzo en blanco de Knime

Esto es un lienzo en blanco con el cual pueden hacerse multitud de configuraciones para tratar la información. El uso que se le dará en este ejemplo será más bien sencillo, solo para mostrar algunas capacidades, pero pueden generarse flujos de trabajo complejos, como el que se muestra a continuación. 

Flujo de trabajo complejo en Knime

Además de las capacidades nativas, debe tenerse en cuenta que el programa es muy integrable. Para aquellas personas acostumbradas al scripting, tanto R como Python pueden ser usados desde dentro del propio programa. Además, BIRT (una herramienta de reporting) también está integrado con Knime, por lo que se tiene el ETL de Knime con el reporting de BIRT. Pero este no es el motivo de este texto, sino mostrar un ejemplo clarificador.

Importar los datos

Para comenzar, es necesario tener datos. Al no disponer de ninguna base de datos de ejemplo que se pueda usar, ha de buscarse algún tema. En particular, el ejemplo de este tutorial será utilizando este espacio tan cómodo (¡y gratis!) de Datadista, donde se van actualizando bases de datos de forma recurrente. El único problema: es sobre Covid-19. Viva la originalidad.

Lo que aparentemente puede parecer un problema porque la fuente de datos es online, es un beneficio. No hay que descargarse cada dos por tres el fichero. Lo único necesario es especificar el enlace en el lector. Knime tiene diferentes lectores para formatos de ficheros diferentes. En este caso, con escoger el nodo «File Reader» y especificar la fuente ya estaría:

Nodo File Reader en Knime
Configuración enlace para carga de datos

Para que posteriormente no haya que hacer más retoques de los necesarios en la base, hay una pestaña de transformación que permite cambiar los formatos de las columnas, así como filtrar las que no se deseen, entre otras opciones. En este caso, se transforma la columna de fecha (que está en formato texto) a formato fecha para poder tratarla. La tabla de datos se visualiza a continuación:

Tabla con datos cargados

Con columnas resumidas así:

Resumen de columnas de la tabla de datos

Tratamiento de datos

Ya que la tabla escogida está bastante limpia, no hay mucho tratamiento que hacer. Pero algo siempre puede necesitarse en el análisis. Por ejemplo, pueden extraerse los campos de las fechas con el nodo «Extract Date&Time Fields»:

Tratamiento de fechas

Este devuelve información como esta en la tabla:

Tabla con columnas para el desglose de fechas (año, mes, día...)

Habiendo decidido que el análisis se centra en los fallecimientos, tal vez sea interesante agrupar la información en función de ciertas fechas. Para eso, se utiliza el nodo «GroupBy». Posiblemente, este sea uno de los nodos con más utilidad para este tipo de trabajo. La agilidad para hacer agrupaciones y cálculos es sorprendente. En este ejemplo en particular, se escoge «Sum» como agregador, pero cada formato de dato tiene una variedad de agrupaciones posibles muy completa, como se observa a continuación:

Configuración de la agrupación de fechas.
Configuración de las agregaciones

Tras algo de limpieza, se consigue una tabla como la siguiente:

Tabla final tras el tratamiento de datos

¡Ahora solo hay que añadir un gráfico de líneas (hay varias opciones de visualización en Knime) mediante un «Line Plot» y listo! Sin hacer mucha configuración y escogiendo el número de mes (porque poniendo el nombre del mes se solapan los nombres), el programa devuelve este gráfico: 

Gráfico de línea con evolución de fallecimientos por mes

Tal vez sea buena idea retocar un poco los gráficos. Para eso, solo hay que transformar a tipo cadena el número de mes («Number to string»).

Evolución de fallecimientos acumulados por mes.

Hay algo mal, ¿no? No puede ser que los fallecimientos suban sin parar. Esto sucede porque, al escoger la agrupación, se elige el máximo de los fallecimientos de cada mes. En esta base de datos, los casos son acumulados; por lo que hay, cada mes, la suma de los meses anteriores. Knime también tiene una solución si se desean las agrupaciones móviles. Mediante el nodo «Moving Aggregation», configurado con la opción «Range» (este tipo de agrupación efectúa una resta de cada fila con respecto a la anterior) y un par de opciones más, se llega a los resultados que se buscaban:

Configuración para pasar de datos acumulados a no acumulados
Evolución de fallecimientos por mes

Para ejecutar un ejemplo sencillo sería suficiente, pero en el día a día es probable que con esto no alcance. Tal vez resulte necesario ampliar las miras y utilizar otro software para visualizaciones, como Tableau, PowerBi o DataStudio; ya que hay que preparar un cuadro de mando completo e interactivo sobre la dirección de varios datos referentes al Covid-19. Al fin y al cabo, una de las cosas que conviene tener en cuenta sobre Knime es que se trata de una herramienta de ETL, no de visualización. De nuevo, las posibilidades que ofrece el programa para integrarse con otras herramientas resuelven este inconveniente. 

Explotar y visualizar

Por lo de ahora, se va a replicar este pequeño gráfico en tres plataformas diferentes. Para eso, pueden exportarse los datos de diferentes maneras. La más típica es mediante el nodo «Excel Writer», con el cual se genera un fichero de Excel con la información tal y como aparece en la tabla de Knime. Algo así, pero en Excel:

Tabla exportada a Excel

Teniendo en cuenta que la información debe estar disponible en Tableau, DataStudio y PowerBi (sin licencia de pago, obviamente), tanto Google Drive como Excel son las herramientas más comunes para exportar. Para esto, los nodos de Google, PowerBi y Tableau permiten usar las cuentas personales para enlazar las plataformas. También, por seguir con la tradición, nunca está de más exportar la información a .xlsx para poder facilitar la tarea a aquellas personas que quieran trabajar sobre el fichero. El flujo sería algo como lo siguiente:

Flujo de Knime para el ejemplo completo

Todos los nodos utilizados para obtener la base de datos utilizada están encapsulados en el metanodo titulado «encapsular tratamiento». En Knime, hay dos formas de encapsular nodos. Una es el metanodo, que sencillamente agrega los nodos en uno. Otra forma son los componentes, que se pueden compartir por la comunidad y amplían las posibilidades interactivas, pero es un terreno que tiene mucha chicha por sí sola como para tratarlo en este tutorial. Lo interesante aquí son los 4 nuevos nodos que se añaden. El «Excel Writer» y los autenticadores, conectores y escritores de Google. En realidad, sus configuraciones son bastante intuitivas así que es poner, montar y comprobar que los ficheros están donde se quieren. Una vez configurado, lo único que hay que hacer es montar el cuadro de mandos.

Con Tableau, así como con DataStudio, se carga desde Google Drive y ya puede hacerse el cuadro de mando deseado. En este caso, algo rápido…

Datos en Tableau
Tableau
 Datos en DataStudio
DataStudio
Datos en PowerBI
PowerBI

Ágilmente, estarán disponibles los datos necesarios para actualizar los gráficos o cuadros de mandos pulsando dos botones: el de actualización de Knime y el de actualización de la plataforma. 

Ahora bien, ojalá todos los casos fuesen así de sencillos. Lo normal es que se trabaje con mucha más información, en diferentes fuentes de datos. Por ejemplo, informar solo sobre el número de fallecimientos tal vez no sea suficiente. Puede que se desee hacer predicciones en el tiempo o análisis de series temporales. Quién sabe, ¡tal vez hasta haya una siguiente parte de este tutorial!

Jorge Martínez
Jorge Martínez

"Me encanta la pasta al pesto. También hago cosas con Knime."

Deja un comentario