Tutorial Tableau 05. ETL con Tableau Prep
Herramientas: 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
yend
(Lat/Long Start
,Lat/Long End
,Start time
,End time
,Start station
yEnd station
). - Volver a separar latitud y longitud
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.
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.
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
.
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.
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]))
)
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.
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.
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
(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).
Unir por columnas (join)
En este momento tenemos tres tablas distintas, que tenemos que volver a unir, a partir del campo trip_id
.
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.
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.