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() y makeline() (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) a Columnas
  • DuracionCalculadaMinutos a Filas
  • Bike ID a Detalle
  • Trip Route Category a Filtros: filtramos los trayectos de tipo Round 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 combinado con el operador OR

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.

Línea de referencia vinculada a un parámetro

Mapa bicicletas

Mapa con los últimos avistamientos de las bicicletas

Configuración básica

  • End Lon a columnas
  • End Lat a Filas
  • Bike ID a Detalle
  • REVISAR a Filtros

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

Mapa con los trayectos de las bicicletas

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

Nuevas opciones de configuración para capas de mapas

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

Datos de interés 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 a filas
  • Bike type, Station_name, Distancia (KM), DuracionCalculadaMinutos, Días sin usar, End Station, End Lat y End Lon a Texto.
  • Filtro último uso de cada bicicleta a Filtros.

Una vez preparada la configuración básica, podemos formatear los contenidos de la pastilla Texto:

Configuración de la pastilla de 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:

Cálculo ad hoc
NOTA: llegados a este punto del ejercicio, esta visualización todavía no es del todo funcional, ya que necesitamos crear un nuevo conjunto y una acción de conjunto (cosa que haremos en el siguiente punto) para que funcione como deseamos.

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.

NOTA: los separadores horizontal y vertical no se ven en pantalla hasta que empezamos a llevar gráficos al cuadro de mando, y en cualquier caso tienden a ocupar todo el espacio disponible. Al principio puede resultar algo extraño trabajar con estos elementos.
En la pestaña Jerarquía de elementos podemos ver con más detalle cómo están organizados los elementos que forman el cuadro de mandos

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).

Ventana de configuración de Acciones de dashboard

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) y menú

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.

Opciones de configuración de una acción de filtro

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).

Opciones de configuración de una acción de resalte

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.

    Configuración inicial del conjunto, sin ningún elemento seleccionado

  • Aplicar como filtro este conjunto en las vistas DatosBici, mapa_recorrido_bici y Leyenda (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: seleccionamos Eliminar todos los valores del conjunto; de esta forma, si no hay ninguna bicicleta seleccionada, los gráficos de la franja inferior desaparecerán.

NOTA: aunque podríamos crear una acción de filtro para obtener una interacción parecida, usando la acción de conjunto desaparecen todas las vistas en el caso de que no se haya seleccionado ninguna bicicleta, lo que refuerza la sensación de interactividad.
Opciones de configuración de una acción de conjunto
Más ejemplos de acciones de conjuntos: Ryan Gensel (05/06/2019): “Set Actions Explained”

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.

Opciones de configuración de una acción de parámetro
NOTA: las acciones de parámetro actualizan los valores al pasar o hacer click sobre una marca de la vista. Por ese motivo, si hacemos click sobre un espacio en blanco, no ocurrirá nada. Los controles de parámetros, por otra parte, permiten marcar valores que no están en una marca gráfica. Vamos a mantener los controles de parámetros, ya que suponen una opción más evidente para el usuario y, además, los valores que podemos obtener son distintos a los de las acciones de parámetro.

Más posts