Para la semana 16 de #WorkoutWednesday, Curtis nos comenta que su inspiración para el desafío surgió al buscar crear en Tableau el gráfico “¿Está ocupado?” de Google.

El desafío en cuestión requiere:

  • Crear un histograma que muestre el número promedio de pedidos diarios para cada día de la semana.
  • Cuando el usuario selecciona una fecha, se debe sobreponer una barra en color rosa que muestra el número de pedidos para el día seleccionado. Solo esta barra rosa mostrará etiqueta y su descripción será dinámica de acuerdo a ciertas reglas especificadas en el reto.
  • Adicionalmente, bajo el histograma se debe presentar información de contexto sobre las órdenes promedio para el día de la semana que corresponda a la fecha seleccionada.

Además Curtis incluyo un requerimiento especial: “No utilizar ningún tipo de cálculo de Tabla”.

Perfecto a utilizar cálculos LOD! ¿A quién no le gustan los cálculos LOD?

A continuación, comparto los pasos que seguí.

Paso 1: Crear parámetro “Selected Day”.

El parámetro será de tipo “Date” y nos servirá para que el usuario identifique el día que quiere comparar. El valor actual lo establecí en 12/18/2018.

Paso 2: Calcular el día de la semana que corresponde cada fecha y del día seleccionada por el usuario.

Es decir, se requiere conocer el día de la semana (1-7 o por nombre del día según formato)

Weekday =

DATEPART(‘weekday’, [Order Date])

Weekday of Selected Date =

DATEPART(‘weekday’, [Weekday of Selected Date])

En ambas variables utilizar el formato personalizado dddd.

Paso 3: Calcular la variable “Average Daily Orders”

Average Daily Orders =

{FIXED [Weekday] : AVG(

{FIXED [Order Date] : COUNTD([Order ID])})}

El cálculo LOD interno {FIXED [Order Date] : COUNTD([Order ID])} nos permite obtener el número de ordenes por día de la fecha de orden.

El Cálculo LOD externo nos permite obtener el valor promedio del número de ordenes promedio para cada “Weekday”.

Paso 4: Calcular la variable “Orders by Selected Date”

Orders by Selected Date =

{FIXED [Weekday] : COUNTD(IIF([Order Date] = [Selected Date], [Order ID], NULL))}

El cálculo LOD nos permite contar únicamente las ordenes del día de la fecha seleccionada por el usuario.

Paso 5: Calcular la variable “Max Daily Orders”

Average Daily Orders =

{FIXED : MAX(

{FIXED [Order Date] : COUNTD([Order ID])})}

El cálculo LOD interno {FIXED [Order Date] : COUNTD([Order ID])} nos permite obtener el número de ordenes por día de la fecha de orden.

El Cálculo LOD externo nos permite obtener el valor máximo del número de ordenes por día, en toda la fuente de datos.

Paso 6: Crear variable que nos ayude con las etiquetas para la barra rosa.

Recordemos que el desafío nos indica que solo la barra rosa debe mostrar información y el texto a desplegar será dinámico de acuerdo a una larga, pero larga …..

lista de reglas especificadas en el reto.

Label1 =

IIF([Weekday] = [Weekday of Selected Date] AND [Orders by Selected Date] > 0, “Selected Date”, NULL)

Label2=

IIF([Weekday] = [Weekday of Selected Date] AND [Orders by Selected Date] > 0,

IIF([Orders by Selected Date] = [Max Daily Orders], “as busy as it gets”,

IIF([Orders by Selected Date] >= 0.8 * [Max Daily Orders], “very busy”,

IIF([Orders by Selected Date] >= 0.6 * [Max Daily Orders], “pretty busy”,

IIF([Orders by Selected Date] >= 0.4 * [Max Daily Orders], “busy”,

IIF([Orders by Selected Date] >= [Average Daily Orders], “busier than normal”,

“not busy”)))))

+ CHAR(10) +

STR([Orders by Selected Date]) +

IIF([Orders by Selected Date] > 1, ” orders”, ” order”), NULL)

Paso 7: Crear el gráfico principal.

Se utilizará dos gráficas de barras con eje doble sincronizado.

Definir el gráfico:

  • Columns ⬅   Weekday
  • Rows ⬅   AVG(Average Daily Orders) y  MAX(Orders by Selected Date)
  • Color ⬅   “Color”
  • Tooltips ⬅   MAX(Max Daily Orders) para el eje principal.
  • Text ⬅   “Label1” y “Label2” en el eje secundario

Utilizar barra en color azul para el eje principal y en color rosa con transparencia al 45% para el eje secundario.

En el eje principal definir una línea de referencia con la variable “Max Daily Orders” y la etiqueta indicar que es personalizada con la siguiente descripción “as busy as it gets”

Picture02Paso 8: Crear gráfico de “Text” para la información de contexto que se muestra debajo de la gráfica principal

En este worksheet se aplica el filtro de [Order Date] = [Selected Date]

Definir el gráfico:

  • Text ⬅   AVG(Average Daily Orders).
  • Text ⬅   ”Weekday of Selected Day”.

Picture03Listo!

Link a Tableau Public

Picture04

Después de trabajar con múltiples desafíos que solicitaban “No utilizar LOD Calculations”, fue reconfortante ver ahora la leyenda de ”No utilizar ningún tipo de cálculo de Tabla”. Muchas gracias Curtis!

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

¡Saludos!

Rosario Gauna

 

Advertisements