Tutorial Tableau. Dashboard
Herramientas: Tableau
Última actualización: junio de 2019.
Aviso: 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
Este ejercicio es una variación otros ejercicios ya realizados. Esta versión aprovecha algunas de las funcoinalidades disponibles en la versión 2019.2 de Tableau, publicada a finales de mayo de 2019, para facilitar el trabajo y permitir nuevos niveles de interacción del usuario con el cuadro de mando.
Estas son algunas de las técnicas y funcionalidades que se tocarán en este ejercicio:
- Uniones de fuentes de datos (joining)
- Campos calculados
- Expresiones de nivel de detalle (LOD expressions)
- Conjuntos
- Parámetros
- Funciones
makepoint()
ymakeline()
(2019.2) - Acciones de resalto
- Acciones de conjuntos (2018.3)
- Acciones de parámetros (2019.2)
El cuadro de mando que se creará a lo largo de este ejercicio tiene como objetivo permitir al usuario indicar una serie de parámetros de cara a seleccionar aquellas bicicletas que necesiten revisión, así como ver los datos concretos de cada bicicleta seleccionada.
Fuente de datos
Los datos se han obtenido en la web de Metro Bike Share, y están actualizados hasta el primer trimestre de 2019.
Sin embargo, y con respecto al ejemplo trabajado en el tutorial “Análisis con Tableau”, no se ha realizado ninguna transformación para dividir puntos de inicio y de final de trayecto, ya que la nueva funcionalidad makeline()
permite aprovechar la estructura de los datos directamente.
Unión de fuentes de datos
ESTO HAY QUE COMPLETARLO
Campos calculados
Para poder preparar los distintos gráficos, necesitamos crear una serie de campos calculados que nos ayudarán a decidir qué bicicletas queremos revisar.
A nivel de fila
Distancia (KM)
: calcular distancia entre dos puntos
Para obetener la distancia recta recorrida en cada trayecto (dos puntos en una proyección geográfica), podemos usar esta fórmula en un nuevo campo calculado (fuente del cálculo ):
// Distancia (KM)
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]))
)
Sin embargo, tenemos que ser conscientes de que este nuevo campo calculado tiene una serie de limitaciones:
- No se trata de la distancia real, ya que carecemos de información sobre puntos intermedios que nos ayudarían a acercarnos al trayecto real.
- Algunos de los trayectos comienzan y acaban en el mismo punto (los de tipo
Round Trip
), por lo que tendremos que filtrar este tipo de trayectos para que el resto de cálculos no se vean afectados.
DuracionCalculadaMinutos
: calcular el tiempo real de Servicios
De la web de Metro Bike Share:
Trip lengths are capped at 24 hours.
Para nuestro cuadro de mando, vamos a usar un nuevo campo calculado que tenga en cuenta todo el tiempo de servicio de cada trayecto, aunque podemos suponer que el valor obtenido no tiene por qué ser tiempo de uso real.
// DuracionCalculadaMinutos
DATEDIFF('minute',[Start Time],[End Time])
Expresiones de nivel de detalle
Días sin usar
: calcular cuantos días lleva cada bicicleta sin ser usada
Para calcular este campo volvemos a usar la función datediff()
, pero en este caso necesitamos obtener valores de distinto nivel de agregación:
- Último día en el que se ha usado cada bicicleta: usamos una expresión de nivel de detalle para obtener el valor máximo de las fechas para cada bicicleta, independientemente de otras dimensiones:
{FIXED [Bike Id] : MAX([End Time]) }
- Último día para el que tenemos datos: en este caso, usamos una simplificación de la sintaxis para usar una expresión de nivel de detalle de tipo
FIXED
pero que no tenga en cuenta ninguna dimensión:{MAX([End Time])}
// Días sin usar
DATEDIFF('day',
{FIXED [Bike Id] : MAX([End Time]) },
{MAX([End Time])})
Calculos espaciales
Finalmente, vamos a crear dos nuevos campos calculados aprovechando las nuevas funciones espaciales malepoint()
y makeline()
, que nos facilitarán la creación de mapas de recorridos.
Ruta
: calcular trayectos de A a B
// Ruta
MAKELINE(MAKEPOINT([Start Lat],[Start Lon]),MAKEPOINT([End Lat],[End Lon]))
Último punto de la bici
: calcular último punto en el que se ha usado cada bicicleta
Como sólo nos interesa obtener el último punto en el que se ha visto cada bicicleta, creamos un cálculo que tenga en cuenta en cada fila si se trata del último viaje de la bicicleta usada en ese trayecto o no.
// Último punto de la bicicleta
IF [End Time] = {FIXED [Bike Id]:MAX([End Time])} THEN
MAKEPOINT([End Lat], [End Lon])
END
Gráficos
Gráfico de dispersión con indicadores de uso
Configuración básica
Configuramos el gráfico de la siguiente forma:
Distancia (KM)
aColumnas
DuracionCalculadaMinutos
aFilas
Bike ID
aDetalle
Trip Route Category
aFiltros
: filtramos los trayectos de tipoRound Trip
. Como los filtros de dimensiones se aplican después de los cálculos de conjuntos, expresiones de nivel de detalle… (ver más información), añadimos el filtro al contexto, y marcamos que se aplique a todas las hojas de trabajo que usen esta fuente de datos.
Parámetros
Vamos a permitir al usuario indicar los umbrales mínimos de kilómetros y minutos, o los días sin usar para decidir qué bicicletas hay que revisar. Para ello, tenemos que crear un parámetro para cada una de las condiciones que puede manipular el usuario:
Muchos Kilometros Parámetro
:- Tipo de datos: entero
- Valor actual: 600
- Valores permitidos: Intervalo
- Mínimo: 1; Máximo: 900; Tamaño de paso: 50
Muchos minutos Parámetro
:- Tipo de datos: entero
- Valor actual: 27500
- Valores permitidos: Intervalo
- Mínimo: 1; Máximo: 40000; Tamaño de paso: 1000
Muchos Kilometros Parámetro
:- Tipo de datos: entero
- Valor actual: 364
- Valores permitidos: Intervalo
- Mínimo: 1; Máximo: 728; Tamaño de paso: 1
Conjuntos
El gráfico muestra todas las bicicletas, y queremos destacar aquellas que cumplan ciertas condiciones:
- Un mínimo de kilómetros
Y
minutos acumulados O
Un mínimo de días sin usar
Para diferenciar rápidamente aquellas marcas que cumplen las condiciones de las que no, podemos usar la funcionalidad conjuntos
. Para ello, tenemos que partir de una dimensión que se esté aplicando en la vista (en nuestro caso, Bike ID
), y aplicar las condiciones que consideremos adecuadas.
Para que los conjuntos se adapten a las indicaciones del usuario, tenemos que comparar las medidas utilizadas con los parámetros que hemos creado en el paso anterior.
Aunque podemos crear un único conjunto con una fórmula compuesta de varias cláusulas ((condición 1 Y condición 2) O condición 3
), vamos a crear un conjunto combinado a partir de dos conjuntos dinámicos.
// Muchos minutos y kilometros
SUM([Distancia (KM)]) > [Muchos Kilometros Parámetro]
AND
SUM([DuracionCalculadaMinutos]) > [Muchos minutos Parámetro]
// Muchos días sin usar
MAX([Días sin usar]) > [Días sin usar Param]
Conjunto REVISAR
a canales gráficos
Los conjuntos son una forma de crear variables binarias que facilitan la tarea de destacar gráficamente las marcas de nuestro interés.
En este ejemplo, vamos a crear una codificación gráfica redundante, ya que vamos a asignar el conjunto REVISAR
a los canales Color
, Tamaño
y Forma
. Configuramos cada uno de estos canales de tal forma que los puntos de las bicicletas a revisar destaquen sin dejar lugar a duda.
Líneas de referencia
Finalmente, y para ayudar al usuario a contextualizar sus acciones, vamos a añadir dos líneas de referencia que van a estar vinculadas a los parámetros vinculados a las medidas Distancia (KM)
y DuracionCalculadaMinutos
. De esta forma, cuando el usuario modifique los parámetros las líneas de referencia se moverán automáticamente.
Mapa bicicletas
Configuración básica
End Lon
acolumnas
End Lat
aFilas
Bike ID
aDetalle
REVISAR
aFiltros
Filtro para obtener solo el último avistamiento
Sólo necesitamos una marca para cada bicicleta, la que contiene los datos de la última vez que se ha usado. Para ello, vamos a crear un nuevo campo calculado que comprueba, para cada bicicleta, si un trayecto en cuestión es el último de esa bicicleta o no.
// Filtro último uso de cada bicicleta
[End Time] = {FIXED [Bike Id] : MAX([End Time])}
Una vez creado el campo calculado, lo llevamos a Filtros
.
Mapa recorridos
Configuración básica
Para crear la configuración básica de este mapa, basta con hacer doble click sobre el campo calculado Ruta
que hemos generado al comienzo del ejercicio. Como es un campo de tipo espacial, Tableau ya sabe cómo tiene que interpretarlo.
Sin embargo, si nos fijamos bien observaremos que a pesar de que efectivamente se dibujan muchas líneas de trayecto, Tableau indica que hay una única marca. De hecho, si intentamos seleccionar una única línea observamos que no es posible.
Esto se debe a que no hemos utilizado ninguna dimensión para particionar los datos, por lo que las líneas están agregadas al nivel máximo. Dado que vamos a usar este mapa para visualizar los trayectos de una única bicicleta cada vez (una vez que el usuario haya seleccionado la bicicleta en el cuadro de mando), vamos a llevar la dimensión
Bike ID
a Detalle
.
Además, vamos a aprovechar las nuevas posibilidades que ofrece la versión 2019.2 para mostrar más detalle en el mapa, con la siguiente configuración:
Mapa > Capas de mapa > Estilo: Calles > [x] Calles, carreteras, rutas
Segunda capa
Además de las líneas de trayecto, vamos a incluir puntos con la localización del último uso de las bicicletas seleccionadas. Para ello, duplicamos la pastilla de Columnas
(Longitud (generado)
) y cambiamos las asignaciones de variables a canales gráficos. Eliminamos Ruta
y llevamos Último punto de la bici
a Detalle
, y modificamos otros atributos gráficos para que destaquen sobre el mapa.
Datos de la bicicleta seleccionada
Configuración básica
La configuración básica para esta vista consiste en aplicar los filtros, y llevar a Texto
aquellas variables que queramos visualizar.
Bike ID
afilas
Bike type
,Station_name
,Distancia (KM)
,DuracionCalculadaMinutos
,Días sin usar
,End Station
,End Lat
yEnd Lon
aTexto
.Filtro último uso de cada bicicleta
aFiltros
.
Una vez preparada la configuración básica, podemos formatear los contenidos de la pastilla Texto
:
Leyenda
Esta visualización simple va a constar de un cálculo ad hoc que nos permite concatenar el valor de la variable con textos:
"Datos de uso (Bike ID: " + STR([Bike Id]) + ")"
La forma más simple de crear el cálculo es llevar primero Bike ID
a Texto
y luego editar la píldura in situ:
Cuadro de mando
Composición y maquetación
El cuadro de mando o dashboard permite combinar varios gráficos, añadirles otros elementos (texto estático, imágenes…) y opciones de interactividad para que los gráficos se adapten a las acciones del usuario.
En cualquier caso, antes de ponerse a trabajar directamente con Tableau, conviene crear un boceto con lápiz y papel para organizar los distintos gráficos que queremos traer al cuadro de mando. Este boceto nos servirá como referencia a la hora de usar dos elementos especiales de los que disponemos para trabajar con cuadros de mando en Tableau: Objetos > Horizontal
y Objetos > Vertical
.
Estos objetos crean contenedores que nos ayudarán a disponer los gráficos y otros posibles elementos en el cuadro de mando.
Vamos disponiendo los elementos de la siguiente forma:
- Los gráficos con datos genéricos (gráfico de dispersión con los indicadores y mapa de últimos avistamientos) irán en la franja superior.
- Los gráficos con los datos de la bicicleta seleccionada (tabla de datos y mapa de trayectos) irán a la franja inferior.
- El gráfico con la leyenda que muestra el ID de la bicicleta seleccionada irá en una franja intermedia, a modo de separador visual.
- En la parte superior, añadimos un título genérico y disponemos los controles de los parámetros de forma horizontal. Podemos eliminar las leyendas de color, tamaño y forma.
Acciones
Una vez que hemos dispuesto los gráficos, tenemos que crear los elementos interactivos, desde la opción de menú Dashboard > Acciones
(o el atajo de teclado Ctrl + Mayus + D
).
Como se aprecia en la imagen, en la versión 2019.2 hay seis tipos de acciones disponibles:
- Filtros
- Resaltar
- Ir a URL
- Ir a la hoja
- Cambiar parámetro
- Cambiar valores de conjunto
Todas las acciones tienen una parte de configuración común:
- Dashboard en el que se va a aplicar la Acción.
- Gráficos desde los que se lanzará la Acción
Ejecutar la acción con
:situar
(hover),selección
(select) ymenú
Dependiendo a qué elemento afecte la acción, la segunda parte de la configuración puede variar. Básicamente, tenemos que indicar a qué gráficos, parámetro, conjunto… va a afectar la acción del usuario.
En el ejercicio vamos a utilizar tres de estos tipos de acción.
Acción de resalte
Las acciones de filtro y de resalte tienen una configuración prácticamente idéntica. Las primeras filtran las marcas gráficas, mientras que las de resalte mantienen todas las marcas y atenúan las que no ha seleccionado el usuario.
En este caso vamos a configurar una acción de resalte, para que cuando el usuario haga click en un punto del mapa de avistamientos, ese punto se destaque en el gráfico de dispersión (pero sin eliminar el resto de los puntos).
Acciones de conjuntos
Las acciones de conjunto, disponibles desde la versión 2018.3, permiten añadir o eliminar elementos de un conjunto. Por tanto, para poder crear una acción de este tipo, primero tenemos que haber creado el conjunto que sobre el que vamos a actuar.
Lo que nos interesa en este caso, es crear un conjunto que contenga únicamente el ID de la bicicleta seleccionada (y el resto de bicicletas quede fuera).
-
Crear el conjunto, sin ningún elemento seleccionado.
-
Aplicar como filtro este conjunto en las vistas
DatosBici
,mapa_recorrido_bici
yLeyenda
(si el conjunto está vacío, las vistas también quedarán en blanco, hasta que se seleccione una bicicleta). -
Crear la acción de conjunto. Al seleccionar un punto en el mapa, el código de esa bici se añadirá al conjunto, y de esta forma se verán los datos en las vistas correspondientes. En la opción
Borrar la selección permite:
seleccionamosEliminar todos los valores del conjunto
; de esta forma, si no hay ninguna bicicleta seleccionada, los gráficos de la franja inferior desaparecerán.
Acciones de parámetro
Las acciones de parámetro, disponibles desde la versión 2019.2, sirven para modificar el valor de un parámetro directamente desde un gráfico. En este caso, lo que vamos a hacer es permitir al usuario seleccionar los indicadores para kilómetros y minutos mínimos para seleccionar bicicletas directamente desde el gráfico de dispersión.
Ya disponemos de dos parámetros, que además están vinculados a las líneas de referencia, por lo que podemos crear directamente las acciones de parámetro correspondientes.