Challenge, Modelación, Union, Actions Filter, UX, Workout Wednesday

Por: Rosario Gauna @rosariogaunag

Aunque bastante tarde, no quiero dejar de compartirles mi experiencia con un reto bastante especial de @RodyZakovichpresentado en la semana 26 de Workout Wednesday. Link al reto

En las primeras líneas de la redacción Rody nos indicaba muy propiamente, que él quería poner un poco más de picante a sus retos con algo más difícil.

Ooh! Ooh! Esa redacción de parte de Rody, era ya una alerta de lo que nos esperaba.

El reto consiste en lograr tres niveles de DrillDown en una sola hoja, a través del uso de modelación de datos y de “Actions Filters”.

El año pasado tuve la oportunidad de aprender de @VizWizBI, la técnica de DrillDown de dos niveles en la misma hoja a través del reto “State to City Drill Down” de la semana 41 del año 2017. Link al reto

Pero ¿Habían escuchado de DrillDown de tres o más niveles en la misma hoja? Yo no.

Desde que leí el reto, resultó para mí en uno de esos retos de los que no puedo dejar de pensar, hasta lograr resolver el enigma.

A continuación, comparto el procedimiento final que yo utilicé:

Paso 1: Modelar los datos – Crear una copia de los datos de Ordenes por cada nivel de DrillDown a utilizar.

Una de las técnicas para lograr este objetivo es crear la “Union” de los datos de “Orders” de Superstore consigo misma. En este caso se requieren tres copias de los datos de “Orders”.

Picture02

¿Por qué necesito una copia de los datos por cada nivel de DrillDown a utilizar? Porque cada una de las copias presentará la información en el nivel de agrupación o detalle solicitado y contendrá diferentes datos para el filtrado.

Picture03bRecordar que para identificar la copia de los datos que se trata, Tableau crea en forma automática una nueva dimensión llamada “Table Name” con los valores “Orders”, “Orders1” y “Orders2”.

Paso 2: Crear las variables de “Year”, “Month” y “Day”.

Year = DATEPART(‘year’, [Order Date])
Month = DATEPART(‘month’, [Order Date])
Day = DATEPART(‘day’, [Order Date])

Paso 3: Crear las variables para ejecutar los “Actions Filters”.

Para cada nivel de DrillDown (o copia de los datos) se definirán dos variables para los “Actions Filters”:

  • “Current Filter”definirá el filtro aplicado en el DrillDown actual (de acuerdo al nivel requerido indicado en el paso 1).
  • “Next Filter”definirá el filtro a ser aplicado en el siguiente nivel, una vez se active el “Action Filter”.

Picture04Ejemplo de los valores de las variables “Current Filter” y “Next Filter” para un subconjunto de los datos:

Picture05Paso 4: Crear variable para agrupar el nivel de ventas: “Anuales” o “Mensuales” o “Diarias”

Esta nueva variable también nos servirá para personalizar el eje de las “x” dependiendo del nivel del DrillDown.

  • Ventas anuales (texto simulando formato yyyy)
  • Ventas mensuales (texto simulando formato mmm, yy)
  • Ventas diarias (texto simulando formato mmm d, yy)
X Axis =

CASE [Table Name]

WHEN “Orders” THEN STR([Year])

WHEN “Orders1” THEN LEFT(DATENAME(“month”,[Order Date]),3) + “, “ + RIGHT(STR([Year]),2)

WHEN “Orders2” THEN LEFT(DATENAME(“month”,[Order Date]),3) + “ “ + STR([Day]) + “, “ + RIGHT(STR([Year]),2)

END

Paso 5: Calcular la variable “Sort” para ordenar la variable utilizada en el eje de las “x”. Convertirla a dimensión.

Sort  =

INT(CASE [Table Name]
WHEN “Orders” THEN DATETRUNC(“year”,[Order Date])
WHEN “Orders1” THEN DATETRUNC(“month”,[Order Date])
WHEN “Orders2” THEN DATETRUNC(“day”, [Order Date])
END)

Paso 6: Calcular el valor de las ventas para las gráficas de las barras y para la gráfica de línea.

Sales Bar = IIF([Table Name] <> “Orders2”, [Sales], NULL)
Sales Line = IIF([Table Name] = “Orders2”, [Sales], NULL)

Paso 7: Crear la gráfica de barras y de líneas.

Mover a los estantes de:

  • Columns ⬅  “X Axis”y ordenar ascendentemente by “Sort”.
  • Rows ⬅  “Sales Bar” para la gráfica de barras y

“Sales Line” para la gráfica de línea.

  • Detail ⬅  “Next Filter”.

La gráfica utiliza un eje doble para las ventas, se deben sincronizar ambos ejes y ocultar el eje del lado derecho de la gráfica.

La gráfica tomará forma hasta una vez ejecutado el “Action Filter” del siguiente paso.

Paso 8: Definir y utilizar el “Action Filter” para el worksheet.

Es importante resaltar que las “marks” seleccionadas por el usuario enviarán el valor de “Next Filter” al campo “Current Filter” una vez aplicado el “Action Filter”.

Picture06

A continuación, comparto un diagrama de la ejecución de los “Action Filter” en los tres niveles de DrillDown:

Picture07 

El ejemplo muestra un “Action Filter” de una sola selección, pero es permitida la selección de múltiples “marks”.

Es decir, si por ejemplo se seleccionan las “marks” de los años 2015 y 2016, el siguiente nivel de DrillDown mostrará los 24 meses correspondientes a los dos años seleccionados.

Paso 9: Ajuste los tooltips y los formatos.

¡Listo!  

Link a Tableau Public

Picture01

Antes de concluir, deseo aprovechar para comentarles que estoy emocionada y halagada por haber sido seleccionada dentro del grupo de Embajadores de Tableau.

Aquellos que me conocen saben que, para mí, Tableau fue amor a primera vista. Por muchos años trabajé y sufrí con las herramientas tradicionales de análisis de datos, pero al conocer Tableau, supe que tenía que aprenderlo.

Mi primera capacitación fue a través de los materiales y videos que Tableau nos proporciona en internet. Me asombraba todo el potencial que se descubría ante mis ojos.

Rápidamente lo que antes me implicaba un gran tiempo y esfuerzo en las herramientas tradicionales, fácilmente se pudo mejorar en un corto período de tiempo con Tableau.

Mi segunda etapa de capacitación empezó al conocer la Comunidad de Tableau, primero con la Comunidad de #MakeoverMonday y posteriormente con la de #Workout Wednesday.

Imposible listar a cada una de las personas que han contribuido a mi aprendizaje con su participación. El poder aprender de los diseños que comparten y/o aprender nuevas técnicas y trucos en Tableau ha sido una experiencia enriquecedora.

¡Les doy las gracias a cada uno de ustedes! ◕‿↼ ◕‿↼

Para concluir y regresando al reto, le doy las gracias a @RodyZakovich por compartirnos este interesante reto.

Si tiene alguna pregunta sobre el blog, no dudes en ponerte en contacto conmigo en twitter (@rosariogaunag)

¡Saludos!

Rosario Gauna

Advertisements