Tutorial Tableau 04. Cuadros de mando con Tableau
Introducción
Para este ejercicio vamos a descargar los datos directamente de la web de Bikeshare.
En la web encontramos más datos que los disponibles en kaggle.com. Antes de empezar a trabajar directamente en Tableau tenemos que preparar los datos.
Comparar indicadores
Antes de preparar el cuadro de mando propiamente dicho, vamos a comparar los indicadores a distinto nivel de agregación, para ver cómo se comportan (en el caso de que haya un alto grado de correlación entre ellos podremos prescindir de alguno y crear gráficas más simples).
Para trabajar usaremos el archivo puntos.csv
.
A nivel de trayecto
Diagrama inicial
Ejemplo paso a paso
A este nivel no podemos utilizar el indicador Días sin usar
ya que este indicador está calculado para cada bicicleta. Por lo tanto, vamos a comparar la distancia recorrida y el tiempo de uso de cada trayecto; como ámbas variables son cuantitativas, vamos a crear un diagrama de dispersión.
MIN([Duracion real])
a columnas (para no sumar valores duplicados).MIN([KM recorridos])
a filas (idem).trip_id
a detalle
No parece haber ninguna correlación entre ambos indicadores. Para ratificar nuestra primera impresión, añadimos una línea de tendencia y revisamos los valores obtenidos del modelo.
Si añadimos una dimensión a la vista para añadir contexto seguimos sin obtener patrones claros.
Técnicas para lidiar con overplotting
Ánalisis > Cluster
Funcionalidad de Tableau
En este caso podemos utilizar la herramienta de análisis de clústeres. Tableau tomará las dos medidas para crear el modelo, pero podemos añadir más medidas y/o dimensiones (en el caso de las dimensiones, Tableau las agregará con la función ATTR()
, que devuelve el valor *
en el caso de que dos registros tengan valores distintos; por eso, no podemos usar la dimensión punto
, pero sí passholder_type
).
Si queremos obtener más información sobre el modelo de clústeres generado por Tableau, debemos hacer click en el botón derecho de la píldora Clústeres
y acceder a Describir clústeres
.
Si queremos guardar el modelo, tenemos que llevar la píldora Clústeres
a la pestaña Datos
.
Información sobre la funcionalidad de clustering en la página de ayuda de Tableau
Conexión con R
Ejemplo paso a paso
Otra opción que tenemos es conectar Tableau con R para que sea este el que hagas los cálculos. Para ello necesitamos ejecutar un servidor de R (puede ser en local), y conectar Tableau a ese servidor.
Para ejecutar un servidor de R en local podemos usar el paquete Rserver
en una consola de R.
install.packages(“Rserve”) # si no tenemos el paquete ya instalado
library(Rserve)
Rserve()
Una vez Rserve
está en marcha, podemos configurar y testar la conexión de Tableau con R. Ayuda > Configuración y rendimiento > Administrar conexión de servidor externo...
. Si estamos ejecutando el servidor de R en local, el servidor será localhost
y el puerto por defecto 6311
.
Ahora, podemos crear campos calculados que envíen los datos de Tableau a R, se calculen en R y obtengamos el resultado de los cálculos. Por ejemplo, para crear un modelo de clusters con dos indicadores numéricos y una dimensión, podemos usar este campo calculado:
// Clusters R
SCRIPT_INT('
Train <- data.frame(.arg1,.arg2,.arg3)
TrainNumeric <- lapply(Train, as.numeric)
TrainNumeric <- as.data.frame(TrainNumeric)
kmeans(TrainNumeric,4)$cluster;',
MIN([KM recorridos]), MIN([Duracion real]),ATTR([Passholder Type]))
- La función
SCRIPT_INT()
indica el tipo de valor que se espera como resultado (valores de tipo número entero). Las otras funciones disponibles sonSCRIPT_REAL()
,SCRIPT_BOOL()
ySCRIPT_STR()
. - Estas funciones tienen dos partes: el script de R, y las variables de Tableu que queremos usar en el cálculo
- En el script de R, las variables
.arg1
,.arg2
… hacen referencia a las variables de Tableau, en el orden que se pasan a la función.
- En el script de R, las variables
- Estas funciones envían los datos resultantes del cálculo de tabla de la vista (es decir, después de aplicar filtros…), por lo que hemos de tener muy claro qué datos se están enviando a R. Si tenemos alguna duda, podemos usar la función
Duplicar como tabulación cruzada
para echar un vistazo a los datos que se envían a R. Puede ser que tengamos que realizar alguna modificación al cálculo de tabla para que R pueda computar los datos.
En nuestro caso, por ejemplo, si aplicamos directamente el campo calculado Clusters R
a Color
obtendremos el error
Error `No es posible completar la acción
Se ha producido un error durante la comunicación con el Servicio RServe.
Error in sample.int(m, k) :
cannot take a sample larger than the population when 'replace = FALSE'
En este caso, tenemos que cambiar el cálculo de tabla para que se compute a nivel de Trip Id
, no Tabla (a lo largo)
, que es el cálculo por defecto.
Documento “Uso de R y Tableau”
Ejemplos de la TC18
A nivel de bicicleta
Matriz de scaterplots
Ahora vamos a ver cómo se comportan los indicadores si los agregamos a nivel de bicicleta, ya que queremos usar estos indicadores para detectar bicicletas que revisar. A este nivel de agregación, podemos comparar los tres indicadores, por lo que vamos a crear una matriz gráfica de correlaciones.
Ya sabemos crear un diagrama de dispersión; simplemente tenemos que llevar una medida a Columnas
y otra a Filas
, y desagregar los datos al nivel que nos interese (en este caso, a nivel de bicileta con bike_id
, llevando esta dimensión a Detalle
).
Para crear la matriz gráfica propiamente dicha, tenemos que añadir todas las medidas que queramos comparar a Columnas
y esas mismas medidas a Filas
pero en orden inverso.
Además podemos añadir líneas de tendencia desde la pestaña de Análisis
.
En este caso, parece haber cierta correlación positiva entre distancia y tiempo de uso acumulados y no hay correlación entre estos indicadores y el indicador Días sin usar
(aunque gráficamente pueda parecer que la hay entre Días sin usar
y KM recorridos
, no hemos de olvidar que el overploting de la zona izquierda nos oculta el hecho de que hay muchísimas más observaciones en esa banda que las que se acercan a la línea de tendencia).
En cualquier caso, y de cara a elaborar el cuadro de mando que nos ayude a detectar las bicicletas que hemos de revisar, vamos a mantener los tres indicadores.
Alternativas gráficas
La matriz de scaterplots no es la única forma que tenemos para comparar gráficamente los tres indicadores. Aquí tenemos algunas alternativas.
Scaterplot densificado
Desde la versión 2018.3 (noviembre de 2018) Tableau cuenta con la marca Densidad
, que permite usar funciones de densificación para aclarar gráficas con problemas de overploting.
Heatmap
Los próximos dos ejemplos no se basan en todas las observaciones, sino en un estadístico de resumen (por ejemplo, R
o R<sup>2</sup>
) obtenidos de un modelo.
SNA
Modificando la estructura de los datos, podemos crear un grafo de redes; cada indicador sería un nodo, y podemos usar los valores de R
o R<sup>2</sup>
para modificar el grosor de las aristas, y el valor (positivo o negativo) para el color (Tableau no es la mejor herramienta para crear grafos de redes).
![Grafo de red](/images/indicadores SNA.png)
Preparar el cuadro de mando
Los cuadros de mando o dashboards permiten combinar varias gráficas en una sola pantalla. A fin de que el cuadro de mando resulte realmente útil, a la hora de diseñarlo deberíamos tener en cuenta estos criterios:
- Situation awareness de Few. Depende en gran medida de los datos disponibles, especialmente a la hora de poder integrar modelos de predicción.
- Multiple Linked Views (MLV): las gráficas deberían adaptarse a las acciones del usuario; es decir, si el usuario filtra ciertos valores en una gráfica, el resto debería reflejar esos cambios.
- Overview First, Zoom and Filter, Then Details-on-Demand
Nuestro cuadro de mando va a mostrar tres gráficas complementarias, y permitirá al usuario fijar los umbrales para los tres indicadores:
- Diagrama de dispersión con las bicicletas a revisar destacadas gráficamente.
- Lista de las bicicletas a revisar con datos básicos.
- Mapa con los puntos en los que se ha visto por última vez cada bicicleta.
Todos los datos mostrados en las tres gráficas se actualizarán cuando el usuario varíe cualquiera de los parámetros.
Scaterplot básico
El diagrama de dispersión será la gráfica principal del cuadro de mando. La configuración básica es la siguiente:
SUM([Duracion real])/2
aColumnas
.SUM([KM recorridos])/2
aFilas
.Bike Id
aDetalle
.
Uso de conjuntos para destacar marcas
Los conjuntos (o sets) son una funcionalidad de Tableau que permite crear dos subconjuntos de marcas a partir de condiciones aplicadas a una dimensión, y suelen usarse principalmente para filtrar marcas y colorearlas de forma binaria (para destacar ciertas observaciones).
En este ejercicio, vamos a crear todos los conjuntos a partir de la dimensión Bike Id
, que es la base del cuadro de mando.
Ejemplo paso a paso
Conjuntos estáticos
Los conjuntos se crean a partir de una dimensión, por lo que accedemos al dialogo Crear > Conjunto
haciendo click en el desplegable de la píldora Bike Id
.
La ventana Crear conjunto
ofrece tres formas de crear los conjuntos (los tres métodos pueden combinarse):
- General: permite seleccionar manualmente qué valores de la lista están dentro del conjunto.
- Condición: podemos establacer una condición a partir de otra variable, cuyo resultado sea binario (verdadero/falso). Dependiendo de si la variable es una dimensión o una medida, las opciones de configuración serán distintas. Para configuraciones más complejas, podemos editar directamente una fórmula con resultado binario.
- Principales: para hacer un top 10, por ejemplo, a partir de una medida.
Vamos a configurar los siguientes conjuntos:
Muchos kilometros
:principales
25 superiores por suma deKM recorridos
.
Muchos minutos
:principales
25 superiores por suma deDuración real
.Muchos días sin usar
:principales
25 superiores por suma deDías sin usar
.
Una vez creados los conjuntos, podemos usarlos para colorear las marcas (en el ejemplo, hemos modificado los colores por defecto de Tableau para que las observaciones destaquen más).
Conjuntos combinados
¿Cómo podríamos destacar al mismo tiempo las bicicletas con más kilometros y más minutos? A la hora de configurar los conjuntos solo podemos indicar una condición.
Sin embargo, podemos combinar dos conjuntos, con las opciones de unión (join) habituales. Para combinar dos conjuntos, los selecionamos y accedemos al menú Crear un conjunto combinado
.
Vamos a crear un primer conjunto combinado Muchos kilometros y minutos
usando el operador AND
. Este nuevo conjunto cruzará los dos conjuntos y obtendremos como resultado únicamente las bicicletas que aparecen en los dos conjuntos primarios (si es que existen).
Finalmente, creamos un último conjunto combinado Revisar
para combinar Muchos kilometros y minutos
con Muchos minutos sin usar
, esta vez con el operador OR
, ya que las observaciones de ambos grupos no intersectan.
Conjuntos dinámicos
Si combinamos la definición de un conjunto con parámetros que el usuario pueda modificar, obtendremos conjuntos dinámicos, que se adaptan a las acciones de los usuarios.
Vamos a configurar estos tres parámetros, adecuando el rango al del indicador en cuestión.
Mínimo de kilometros
Mínimo de minutos
Mínimo de días sin usar
Si añadimos los controles de parámetro a la vista y probamos a manipularlos observaremos que nada cambia en el gráfico. Esto se debe a que aún no hemos vinculado los conjuntos con los parámetros.
Para ello, vamos a editar los conjuntos de cada indicador, indicando una condición por fórmula (y tenemos que desactivar la opción para ver los 25 principales).
- Conjunto
Muchos días sin usar
:[Días sin usar] > [Mínimo de días sin usar]
. - Conjunto
Muchos kilometros
:SUM([KM recorridos]/2) > [Mínimo de kilometros]
. - Conjunto
Muchos minutos
:sum([Duracion real]/2) > [Mínimo de minutos]
.
Ahora, si modificamos los parámetros, los puntos coloreados se adaptarán a las nuevas condiciones.
Vídeo de la TC18
Toque final: líneas de tendencia vinculadas a parámetros
Para que el usuario sea más consciente de sus acciones, vamos a crear dos líneas de referencia (una para la distancia y la otra para el tiempo), que se adaptarán al valor indicado por el usuario en el parámetro.
También usaremos los conjuntos para destacar aún más las bicicletas a revisar jugando con los canales Tamaño
y Forma
.
Tabla
La segunda gráfica va a consistir en una tabla con la información de los tres indicadores para las bicicletas que hay que revisar según los parámetros del usuario.
Bike Id
aFilas
- Conjunto
Revisar
aFiltros
: como los conjuntos están vinculados a los parámetros de usuario, el filtro se actualizará si el usuario modifica cualquiera de los parámetros.
Para mejorar la legibilidad, modificaremos los alias de las columnas para que no reflejen el cálculo.
Nombres de medidas
y Valores de medidas
Estos dos campos generados automáticamente por Tableu nos permitirán dar estructura a la tabla, para mostrar el valor de una medida en cada columna.
Para ello, llevamos la píldora Nombres de medida
a Columnas
y Valores de medida
a texto. Tableau creará una tabla con todas las medidas, pero podemos eliminar, añadir, reordenar o realizar cálculos ad hoc en las píldoras del estante Valores de medidas
.
Mapa
Finalmente, vamos a crear un mapa en el que se localiza el último avistamiento de cada bicicleta que hay que revisar.
Para ello, necesitaremos un nuevo campo calculado que usaremos para filtrar todos los registros en los que aparece cada bicicleta a revisar, salvo la de la última fecha.
// Filtro último uso de cada bicicleta
[Time] == {FIXED [Bike ID] : MAX([Time])}
Configuramos el mapa de la siguiente forma:
Bike Id
aDetalle
Prom(Start Lon)
aColumnas
(no hace falta desagregarla, ya que vamos a filtrar todos los registros menos uno)Prom(Star Lat)
aFilas
- Conjunto
Revisar
aFiltros
Filtro último uso de cada bicicleta
aFiltros
Montar el cuadro de mando
Los cuadros de mando (dashboard) permiten combinar una o más gráficas ya creadas en una únic vista, y son la forma principal de compartir y comunicar nuestros análisis
- Pestaña Dashboard:
Tamaño
: permite indicar el tamaño del cuadro de mandoHojas
: lista con las gráficas creadas y que podemos añadir al cuadro de mandoObjetos
: otros objetos que podemos añadir al cuadro de mando
- Pestaña Trazados: permite una maquetación más precisa de cada uno de los elementos disponibles en el cuadro de mando.
Layout
Para agregar gráficas al cuadro de mando, simplemente tenemos que arrastrarlas desde Hojas
a la zona de trabajo. La primera gráfica que arrastremos ocupara todo el área disponible. A partir de la siguiente, Tableau mostrará una zona gris a la que podemos llevar la nueva gráfica (luego podemos redimensionarla).
De momento, vamos a llevar las gráficas Scater INDICADORES
, tabla
y mapa
, de tal forma que el diagrama de dispersión ocupe la mitad superior del cuadro de mando, la tabla aparezca en la parte izquierda inferior, y el mapa en la derecha inferior.
Las gráficas se adaptarán al espacio que les dejemos en el cuadro de mando, tomando como referencia su propia configuración inicial:
Pero podemos volver a cuadrar cada gráfica directamente desde el cuadro de mando.
También podemos cambiar el tamaño del contenedor estirando desde los extremos.
A modo de ejercicio, vamos a recrear este bosquejo inicial de cuadro de mando:
Mejoras
Las siguientes mejoras siguen el precepto de ofrecer mayor detalle al usuario según se interese por un subconjunto de datos o una observación concreta.
Acciones de usuario
Acción de resaltado (Highlight)
Tableau permite configurar acciones que responden a las interacciones del usuario con las marcas de las gráficas. Hay tres tipos de acciones:
Filtro
: el/los valor/es seleccionado/s sirve/n como filtro para otras gráficas.Resaltar
: el/los valor/es seleccionado/s se resalta/n en otras gráficasIr a la URL...
: el valor seleccionado se usa para pasar una URL al objeto web, que crea una especie de iframe en el cuadro de mando.
En el ejemplo, creamos una acción de resalte para que al seleccionar haciendo click (o creando un área de selección) en cualquiera de las gráficas, el o los objetos seleccionados se resalten en el resto de las gráficas.
Vídeos de la TC18
Título dinámico
En este paso vamos a crear una gráfica que funcionará a modo de título del cuadro de mando. La idea es mostrar el recuento de bicicletas a revisar dependiendo de los valores de parámetros definidos por el usuario.
Para ello, creamos una gráfica con las mismas dimensiones y filtros que hemos usado en el mapa, ya que de esta forma obtendremos exactamente el número de marcas (que en este caso representan a las bicicletas).
Bike Id
aDetalle
- Conjunto
Revisar
aFiltros
Filtro último uso de cada bicicleta
aFiltros
Además, crearemos un campo calculado con la siguiente fórmula para obtener el número de registros de la tabla resultante:
// LBL Nº bicis
"Total de bicicletas a revisar: " + STR(TOTAL(SUM([Número de registros])))
La formula concatena un texto con el valor obtenido de una función de tabla que sirve para obtener el número de registro (convertido a su vez a cadena para poder concatenarlo).
Llevamos este campo a Texto
para crear la gráfica propiamente dicha.
Finalmente, sólo nos queda añadir esta nueva gráfica a la parte superior del cuadro de mando
Gráficas en descripciones emergentes
Tableau permite incluir cualquier gráfica dentro de una Descripción emegente
de otra gráfica. Para ello, simplemente tenemos que crear una gráfica, acceder a la gráfica en la que queremos insertarla y usar la opción Insertar > Hojas
de la configuración de la descripción emergente.
En este ejemplo, al pasar el ratón por los puntos del mapa se nos muestra una descripción emergente con información básica sobre la estación y un timeline doble con información sobre la distancia y el tiempo acumulado de cada bicicleta (hemos fijado el eje Time
para que de esta forma se aprecie también el tiempo que lleva la bicicleta sin ser usada).