Tutorial Tableau 05. ETL con Tableau Prep

Herramientas: Tableau

Este documento es un complemento a las sesiones que imparto sobre visualización de datos y analítica visual, y en ningún caso pretende ser un manual comprehensivo sobre Tableau.

Introducción

Nuestro dataset no tiene la estructura de datos adecuada para dibujar este tipo de mapa, ya que cada línea del dataset no contiene información de un solo punto, sino de dos (estación de inicio y de final). Antes de poder dibujar el mapa que muestre cada recorrido como una línea, vamos a tener que reestructurar los datos.

En lugar de utilizar el dataset de Kaggle, vamos a descargar los datos de la web oficial de Metro Bike Share, que nos ofrece una sección con datos abiertos, y contiene más datos históricos que la versión de Kaggle.

Los pasos que tenemos que seguir son los siguientes:

  • Combinar latitud y longitud en un solo campo de las estaciones de inicio y de final. Creamos los siguientes campos calculados: Lat/Long Start, Lat/Long End
  • Pivotar los datos para todos los pares de variables start y end (Lat/Long Start, Lat/Long End, Start time, End time, Start station y End station).
  • Volver a separar latitud y longitud
Pivotar y expandir (explicación gráficas de los verbos de unión de tablas y reestructuración de dplyr)

Además, y como paso previo, vamos a unificar todos los archivos disponibles en la web oficial, ya que de esta forma obtendremos más datos de los que están disponibles en la web de Kaggle.

NOTA: lamentablemente, Tableau Desktop no permite realizar pivotaciones a partir de campos calculados, por lo que tenemos que pasar a otra herramienta específica de ETL, Tableau Prep, para poder realizar las transformaciones necesarias. Por supuesto, también podemos usar otras herramientas, como los paquetes tidyr y/o dplyr del Tidyverse (de R).

ETL con Tableau Prep

Ejemplo paso a paso

Unir los archivos

El primer paso consiste en unir los archivos.

Unir archivos

Como podemos observar en la esquina izquierda inferior de la imagen, los nombres de las variables no coinciden en todos los archivos. Como simplemente es un cambio en el nombre de las variables, en un siguiente paso vamos a fusionar las variables start_station con start_station_id, y end_station con end_station_id.

Fusionar campos

Concatenar latitud y longitud

En el siguiente paso vamos a concatenar los campos latitud y longitud de inicio y final de recorrido a través de dos campos calculados que devolverán las coordenadas de inicio y final.

Creamos campos calculados para concatenar latitud y longitud

Crear campos calculados y filtrar datos incorrectos

Vamos a aprobechar las tareas ETL para crear los campos calculados que usaremos como indicadores en el resto de ejercicios.

// KM recorridos

6371 * ACOS
(
SIN(RADIANS([start_lat])) * SIN(RADIANS([end_lat])) +
COS(RADIANS([start_lat])) * COS(RADIANS([end_lat])) * COS(RADIANS([end_lon]) -
RADIANS([start_lon]))
)
Vemos que hay recorridos con más de 10.000km, cosa que no es posible

Una de las ventajas de Prep es que nos ofrece una previsualización de la distribución de valores de cada variable. En este caso, observamos que en el nuevo campo calculado la mayoría de los valores están por debajo de 30, pero hay unos pocos de más de 10.000km. Entendemos que ha habido algún problema con el cálculo, pero como son pocas observaciones las filtramos directamente.

También creamos un campo calculado para obtener la duración real de los trayectos, ya que en la web nos dicen que todos los trayectos que pasan de 24 horas han sido codificados como de 24 horas.

En este caso, hay unos pocos registros que devuelven valores negativos, cosa que no es posible. Por eso, filtramos también esos registros.

¿Tiempo negativo?

Crear una rama para cada pivotaje de datos

Como hemos indicado en la introducción, tenemos que pivotar todos los campos start-end. Para poder hacerlo correctamente, vamos a crear tres ramificaciones: una principal, que guardará todas las variables (salvo las que se vayan a pivotar en las otras dos ramas), y dos secundarias, que mantendrán únicamente las variables necesarias para pivotar.

Ramificaciones

Geocodificar tabla de estaciones

En la web tenemos también un archivo con la tabla de las estaciones, con más información disponible (región, fecha de apertura…) pero que, curiosamente, está sin geocodificar. Como en los archivos de los recorridos disponemos de las coordenadas de cada estación, vamos a usar esos archivos para completar la información que le falta a esta tabla.

  • Unir los archivos de recorridos
  • Fusionar las variables de identificadores de estaciones
  • Simplificar la tabla para quedarnos con las latitudes y longitudes medias de cada estación.
  • Unir la tabla agregada con la tabla de las estaciones (hacemos una unión exterior completa porque hay algunas pocas estaciones que aparecen en A pero no en B, y viceversa).
  • Volvemos a fusionar los campos que identifican a las estaciones
Flujo de trabajo ETL

(En el archivo suministrado hay unos pocos valores editados manualmente para completar los valores nulos resultantes de la unión exterior).

Pivotar campos start y end

En cada una de las ramas, tenemos que pivotar los campos de inicio y final correspondientes, de tal forma que cada recorrido pase a ser dos puntos (el de inicio y el final).

Pivotar campos

Unir por columnas (join)

En este momento tenemos tres tablas distintas, que tenemos que volver a unir, a partir del campo trip_id.

Unir por columnas

El problema es que con la unión que hemos hecho hemos duplicado el tamaño real, por lo que tenemos que filtrar las filas que se han unido incorrectamente.

Filtramos las filas que se han creado incorrectamente

En otros pasos repetimos estas dos operaciones con la tercera tabla.

Volver a separar latitud y longitud

Finalmente, volvemos a separar los campos latitud y longitud para poder usarlos luego en Tableau.

Volvemos a dividir latitud y longitud

Ejemplos de la TC18


Más posts