Densificación de datos: ya habrá encontrado este tema cuando haya ido más allá de “Show Me” en Tableau:

  • Agregó aspectos curvos a sus diseños con líneas curvas o polígonos,
  • Ha creado gráficos de barras radiales, o
  • Ha creado otras visualizaciones, donde los datos originales simplemente no eran suficientes, para que su idea de diseño cobre vida.

Para todos estos casos de uso mencionados y no mencionados, ha utilizado la Densificación de datos para enriquecer los datos originales agregando puntos adicionales.

1. DATA DENSIFICATION

Existen muchos blogs buenos que describen las técnicas que se pueden usar para la densificación de datos. Podemos recomendar, por ejemplo, el video de Ken Flerlage “An Introduction to Data Densification” como parte de la campaña #ThinkDataTuesday de Tableau y la publicación de blogpost. Los grandes de Tableau como Jeffrey ShafferJonathan DrummeyJoe Mako también hablaron y escribieron sobre el tema.

ACERCA DE DENSIFICACION DE DATOS

En la sesión de Ludovic Tavernier y mi (Klaus), Surprise Me – Creating Advanced and Unique Charts in Tableau en Tableau Conference Europe en Berlin a principios de este año, Ludovic explicó el concepto de densificación de datos con esta diapositiva:

datadens.png
Técnicas de Densificación de Datos

¿CUÁNDO NECESITAMOS DENSIFICACIÓN DE DATOS?

  • Supongamos que los datos originales solo tenían un registro.
  • Ahora tiene su idea de diseño para visualizar los datos provenientes de este registro como un rectángulo. No puede dibujar un rectángulo con un solo punto, necesita cuatro puntos.
  • Cuando desea dibujar una curva, necesita incluso más de cuatro puntos, para una curva sigmoidea algunos autores recomiendan, por ejemplo, 49 puntos. Para curvas más cortas o más largas, es posible que necesite menos o más de 49 puntos.
  • Entonces, para ambas ideas de diseño, tienes que agregar puntos extra.

¿COMO PODEMOS AGREGAR PUNTOS ADICIONALES?

  • Hay dos técnicas para agregar puntos adicionales, para ambas técnicas, se debe crear un conjunto de registros fuera de Tableau en un denominado conjunto de datos modelo.
  • La primera técnica utiliza datos pre-densificadosen el conjunto de datos del modelo. Eso significa que el conjunto de datos del modelo incluye tantas filas como sea necesario para su diseño (por ejemplo, cuatro filas para un rectángulo o 49 filas para una curva).
  • La segunda técnica utiliza bins para densificar artificialmente los datos. Para crear los contenedores en Tableau en una etapa posterior, solo necesita dos filas para definir el rango en el conjunto de datos del modelo, en el que los contenedores se calcularán (por ejemplo, 1 y 4 para el rectángulo y 1 y 49 para la curva) más adelante.
  • Para ambas técnicas, el producto cartesiano debe construirse utilizando un enlace común o un cálculo de unión.
  • Eso significa que tenemos múltiples copias de los datos para la primera técnica (por ejemplo, 49 copias para diseños curvilíneos). Para la técnica range & bins, los datos se han duplicado.

EN UNA PALABRA

Ambas técnicas realizan la densificación de datos a nivel de fila. La principal ventaja es que podría profundizar hasta el nivel de fila en su visualización y el diseño aún funcionaría. La mayor desventaja es, obviamente, que tiene que duplicar sus datos. Cuando ya tienes una tonelada de datos, probablemente no quieras hacer esto.

But: Do we really have to? Let’s try something different…

2. DENSIFICACIÓN INTERNA DE DATOS

Las técnicas comunes de la densificación de datos permiten a los usuarios profundizar a nivel de fila. Hay casos de uso seguros, cuando visualiza datos a nivel de fila, por ejemplo, cuando los datos se agregan previamente. Hemos visto esto, por ejemplo, en muchos conjuntos de datos #makeovermonday.

Pero en muchas, si no en la mayoría de las visualizaciones (del mundo real), visualizamos agregaciones, a menudo basadas en datos transaccionales, como se practica muchas veces con Tableau Superstore. Y esta es la clave de una técnica, que hemos denominado Densificación interna de datos.

ACERCA DE LA DENSIFICACIÓN INTERNA DE DATOS

Mientras que la Densificación de datos densifica y multiplica los datos por un factor que incorpora un conjunto de datos del modelo, la densificación interna de datos crea un densificador a partir de los datos originalesy divide los datos en particiones (estas particiones no necesariamente tienen el mismo número de registros). Por ejemplo para n = 2 duplicaríamos los datos con la Densificación de datos y construiríamos dos particiones (más pequeñas) con la Densificación interna de datos.

Esto se puede hacer en función de cualquier dimensión o medida en los datos originales, que tenga al menos dos miembros distintos (para duplicar los datos), y es por eso que esta técnica solo funciona para las agregaciones.

Esto es importante: la densificación interna de datos se basa en el supuesto de que siempre tiene suficientes miembros para el número deseado de “copias” en su dimensión de densificación para el nivel de detalle en su vista.

Volvamos a esta suposición después de presentar las técnicas.

¿CÓMO PODEMOS AGREGAR PUNTOS “EXTRA”?

Picture1

Técnicas de Densificación Interna de Datos
  • Utilice Declaraciones IF o CASE para dimensiones cualitativas como nombres o datos geográficos.
  • Utilice el Módulo para las dimensiones de fecha como minutos, horas, días, semanas o meses y para cualquier dimensión o medida entera. (Con la función ASCII, puede traducir cada nombre a un número entero para poder usar Módulo también).
  • Con la densificación de datos, cada copia de los datos es idéntica. Por lo tanto, puede, por ejemplo, resumir promedios. No puede hacer esto con la densificación interna de datos. Para recuperar la agregación que hemos dividido en nuestras diferentes particiones, podemos usar LODs en su lugar. Volveremos a esto más adelante cuando mostraremos algunos casos de uso para esta técnica.

Pongamos un ejemplo con los datos de Tableau Superstore e intentemos “duplicar” los datos con la Densificación interna de datos. La visualización que tenemos en mente es mostrar las ventas de la categoría 2018 por mes.

EJEMPLO 1

Utilizando [Region] con densificador con una Declaración-IF:

[Region_Dens] = IF [Region]=”West” THEN 1 ELSE 2 END

Crear una vista con MONTH(OrderDate) en columnas, Categoría en filas y COUNTD (Region_dens) en la etiqueta nos muestra si este densificador es válido:

Tableau - Inverted Data Densification 2019-08-24 13-54-17
Control de densificabilidad

Sí, tenemos dos valores distintos (1 y 2) en cada período para cada categoría.

¿Funcionaría también para la subcategoría?

Tableau - Inverted Data Densification 2019-08-24 13-56-08.jpg
Control de densificabilidad

No, tenemos períodos con un solo valor (por ejemplo, región Oeste u otra de las otras regiones) y algunos períodos sin ventas.

EJEMPLO 2

Utilizando [Order Date] como densificador con Modulo:

[OrderDate_Dens] = DATEPART(‘day’,[Order Date]) % 2

El módulo calcula un residuo. En este caso, la fórmula anterior está calculando un “0” para días pares (por ejemplo, 8 = 2x 4, residuo = 0) y un “1” para días impares (por ejemplo, 7 = 2x 3, residuo = 1).

Puede usar Modulo con cualquier otro dividendo para definir su densificador.

Ejemplo de Módulo

Cuando volvemos a mirar MONTH(OrderDate) en columnas, categoría en filas y COUNTD (OrderDate_dens) en la etiqueta, podemos ver que [OrderDate_Dens] también es un densificador válido.

Tableau - Inverted Data Densification 2019-08-24 14-03-51
Control de densificabilidad

EJEMPLO 3

¿Qué pasa si necesitáramos cuatro copias de los datos? Podemos usar nuevamente [Fecha de pedido] como nuestro densificador:

[OrderDate_Dens_4x] = STR(DATEPART(‘day’,[Order Date]) % 2)+”-“
+STR(DATEPART(‘week’,[Order Date]) % 2)

Esta fórmula combina un “0” para pares y un “1” para días impares con un “0” para pares y un “1” para semanasimpares y nos da cuatro combinaciones posibles (0-0, 0-1, 1-0, 1-1).

Es valido? ¡Sí lo es!

Tableau - Inverted Data Densification 2019-08-24 14-11-51
Control de densificabilidad

EJEMPLO 4

Para la visualización que tenemos en mente aquí (categoría de ventas 2018 por mes), el número de “copias” que puede crear con estos datos es limitado. Logramos crear 10 copias combinando dos densificadores, pero no más.

Superstore no es el conjunto de datos perfecto para esta técnica. Perfecto sería, por ejemplo, los datos de producción, donde tenemos registros que vienen regularmente como cada minuto o cada 10 segundos o algo así.

Al probar el módulo con datos de mi planta de energía solar (Klaus) (donde los datos llegan cada 5 minutos), logramos reunir 3,456 combinaciones válidas en minutos usando el módulo con días, horas y minutos el MONTH (Tiempo) y “Dimensión “-nivel.

Tableau - Book4 2019-08-26 13-43-26
Datos Granulares
Tableau - Book4 2019-08-26 13-42-21
Control de densificabilidad

Suficientes “copias” para dibujar algunas curvas bonitas 😎.

EN UNA PALABRA

  • La densificación interna de datos crea un densificador a partir de los datos originales. Esto se puede hacer en función de cualquier dimensión o medida en los datos originales, que tenga al menos dos miembros distintos.
  • La técnica realiza la densificación de datos a nivel de agregación.
  • Para utilizar la técnica, siempre se debe asegurar que haya suficientes miembros para el número deseado de “copias”en la dimensión de densificación. Por lo tanto, recomendamos encarecidamente los controles de densificabilidad (este término fue inventado por Ken Flerlage).

Bien, veamos algunos casos de uso para demostrar las capacidades de esta técnica. ¡Y estos son masivos!

3. CASOS DE USOS

GRÁFICA DE LÍNEA CURVA

Para nuestro primer caso de uso, queremos crear un gráfico de líneas de estilo Sigmoide. Por supuesto, puede argumentar el propósito de dicho gráfico, pero bueno, esto es solo para demostrar las capacidades de la Densificación Interna de Datos.

Tableau - Book2 2019-08-26 20-31-41.jpg
Un gráfico de líneas curvas

Para crear esto, estamos aprovechando la densificación interna de datos en combinación con la técnica de rango y bins. Para hacer esto, necesitamos una “copia” adicional de nuestros datos.

I. DEFINIENDO EL DENSIFICADOR

Queremos mostrar las ganancias de la categoría para todos los años. Primero verifiquemos si hay un densificador válido e intente nuevamente Módulo con el día del Order Date:

[Densificator] = DATEPART(‘day’,[Order Date]) % 2

Tableau - Book2 2019-08-26 20-38-52
Control de densificabilidad

¡Sí, tenemos un densificador válido!

II. ESTABLECER EL RANGO

Para la técnica de rango y contenedores, primero debemos establecer el rango de 49. Este es el número de puntos que queremos usar para nuestra curva de estilo sigmoide. Llamamos a campo calculado path

[Path] = [Densificator] * 48

… Y esto nos da un 0 o un 48. Cuando ahora creamos un bin y establecemos el tamaño del bin en 1, deberíamos obtener nuestros 49 puntos.

Edit Bins [Path] 2019-08-26 21-08-28
Densificación artificial con bins

Verifiquemos: Sí, 49 marcas (¡debe seleccionar “Mostrar valores faltantes” para obtener esto)!

Tableau - Book2 2019-08-26 21-11-39
Técnica de Rangos y Bins

III. DEFINIENDO LA MEDIDA

Hemos dividido nuestros datos en dos partes, por lo tanto, tenemos que redefinir nuestro beneficio utilizando un LOD:

[Profit LOD] = { FIXED MONTH([Order Date]),[Category]:SUM([Profit])}

Queremos seleccionar YEAR(Order Date) como filtro en un momento posterior. Asegúrese de establecer el filtro como un filtro de contexto, de lo contrario tendría que agregar YEAR(Order Date) a este LOD fijo.

Ahora puede usar [Path] y [Profit LOD] y seguir, por ejemplo, este blog  de Toan Hoang para crear gráficos de líneas curvas.

Consulte las líneas curvas con esta técnica en Tableau Public

GRÁFICO RADIAL

En este ejercicio, yo (Rosario) usé la técnica para crear un gráfico radial con ventas semanales en el 2018.

Gráfico Radial

I. DEFINIENDO EL DENSIFICADOR

En esta vista, queremos mostrar las ventas semanales y se requieren dos puntos de datos por semana. Vuelva a verificar primero si hay un densificador válido y pruebe el Módulo, pero ahora con el valor ASCII del primer carácter del campo Product Name:

[Densificator] = ASCII([Product Name]) % 2

Control de densificabilidad

Sí, tenemos un densificador válido.

II. DEFINIENDO LA MEDIDA

Hemos dividido nuestros datos en dos particiones, por lo tanto, tenemos que redefinir nuestras ventas semanales con el siguiente LOD:

[Weekly Sales] ={FIXED [Week]: SUM([Sales])}

En este ejercicio, el uso de la técnica permite que cada una de las particiones use valores diferentes para el radio:

[Radius]  =

0.15 + (ATTR([Data_Dens]) * SUM([Weekly Sales] / {FIXED : MAX([Weekly Sales])}))

Resultando en:

  • Cuando densificator igual 0: [Radius] = 0.15
  • Cuando densificator igual 1: [Radius] = 0.15 + (SUM([Weekly Sales] / {FIXED: MAX([Weekly Sales])}))

Juega con la versión interactiva o descarga el libro aquí.

GRÁFICOS DE LINEAS ENRIQUECIDOS

Hace solo unas semanas, yo (Klaus) escribí sobre how to encode change in line charts.

10
Visualizando cambio entre dos marcas

El blogpost describe cómo se triplicaron los datos para lograr esto. Nuevamente, probémoslo con la Densificación interna de datos.

I. DEFINIENDO EL DENSIFICADOR

En esta vista, queremos mostrar las ventas de categoría para todos los años. Primero verifiquemos si hay un densificador válido e intente nuevamente Módulo con el día de la fecha de pedido:

Control de densificabilidad

No, tenemos algunos meses con solo dos residuos distintos y, por lo tanto, el densificador no es válido.

¿Qué hay de esto?

[Densificator] = int(Sales) % 3

Control de densificabilidad

Sí, con el módulo del entero de las ventas, obtenemos uno válido

II. DEFINIENDO LA MEDIDA

Hemos dividido nuestros datos en tres particiones, por lo tanto, tenemos que redefinir nuestras ventas con el siguiente LOD:

[Sales LOD] = { FIXED YEAR([Order Date]), MONTH([Order Date]),
             [Category]: SUM([Sales])}

Aquí, hemos incluido YEAR(Order Date) en nuestro LOD y podemos tomar el año y la categoría solo como un filtro de dimensión.

El resto es solo encontrar y reemplazar tanto el antiguo densificador (“Table Name”)  como la medida anterior (Sales) con los nuevos. ¡Eso es!

Puede encontrar y descargar el libro actualizado en Tableau Public.

PORTAFOLIO DE ACCIONES

En este ejercicio, yo (Rosario) usé la técnica para evitar pivotear datos con tres medidas (Low, High and Price) contenidas en cada registro diario por stock. Para simplificar los cálculos necesarios.

Stock Portfolio – #WorkoutWednesday 45/2017

El desafío en cuestión fue lanzado por el único e increíble Andy Kriebel, que corresponde a la semana 45de 2017 de #WorkoutWednesday. En esa semana, nos retó a construir un hermoso estilo de exhibición de una cartera de acciones, una idea originalmente de Jeffrey Shaffer. Este ejercicio fue la primera vez que experimenté los beneficios de usar la técnica de Densificación de datos internos. A continuación comparto un resumen de los pasos principales de la solución, aplicando la técnica tal como la uso hoy.

I. DEFINIENDO EL DENSIFICADOR

En esta vista, queremos mostrar el mínimo de 52 semanas y el máximo de 52 semanas de una acción en el último año y el precio actual. Se requieren tres puntos de datos por Stock (o Símbolo). Vuelva a verificar primero si hay un densificador válido:

[Marks_Dens] =

CASE DATEPART(‘day’, [Date]) % 3

WHEN 0 THEN “Low”

WHEN 1 THEN “High”

WHEN 2 THEN “Close”

END

Control de densificabilidad

Sí, tenemos un densificador válido.

II. DEFINIENDO LAS MEDIDAS

Hemos dividido nuestros datos en tres particiones, por lo tanto, obtenemos el valor del precio mínimo y el precio máximo por acción en el último año y el precio actual por acción (la acción, en la tabla, se identifica con el nombre de Symbol) con los siguientes cálculos de LOD:

[52-Week Low] = {FIXED [Symbol] : MIN([High])}

[52-Week High] = {FIXED [Symbol] : MAX([High])}

[Price] = {FIXED [Symbol]: SUM(IIF([Date] = {FIXED: MAX([Date])}, [Close], NULL))}

Posteriormente, para cada uno de los tres posibles valores del densificador, asocie un valor dentro del eje x.

[Mark Axis Value] =
CASE [Marks_Dens]

WHEN “Low” THEN 0.004

WHEN “High” THEN 0.996

WHEN “Close” THEN

([Price] – [52-Week Low])  /

([52-Week High] – [52-Week Low])

END

Finalmente, para cada uno de los tres posibles valores del densificador, asocie una medida con la etiqueta que desea mostrar.

[Mark Label Value] =

CASE [Marks_Dens]

WHEN “Low” THEN [52-Week Low]

WHEN “High” THEN [52-Week High]

WHEN “Close” THEN NULL

END

Resultado de las fórmulas

En este ejercicio, el uso de la técnica nos permite mostrar para cada una de las acciones tres marcas (gracias a la densificación) y también para cada una de las marcas usar valores de medida independientes.

La versión actualizada de la visualización se puede encontrar aquí.

4. RESUMEN

Ambos pensamos que la Densificación Interna de Datoses una técnica muy poderosa que le permite crear cualquier gráfico en Tableau que normalmente requeriría la adición de puntos adicionales. Hemos mostrado cuatro casos de uso, pero podríamos haber agregado muchos más.

La Densificación Interna de Datos solo se puede usar bajo ciertos supuestos. Como se describe en nuestros casos de uso, tiene que haber un densificador válido. Además, funciona solo en el nivel de agregación y mejor con conjuntos de datos grandes y granulares. Por lo tanto, es una buena adición a las técnicas de Densificación de Datos existentes, porque estos conjuntos de datos son los casos en los que la Densificación de Datos “dañaría” más. Como se mencionó anteriormente: cuando ya tiene toneladas de datos, no desea multiplicarlos. Para conjuntos de datos pequeños y / o agregados previamente, no tendrá problemas para multiplicar sus datos.

¡Eso significa que debes conocer tus datos! No recomendamos usar esta técnica con datos en vivo, donde no puede estar seguro de qué datos entran. Úselo con conjuntos de datos completos / cerrados o en casos, donde tiene control total sobre las actualizaciones de extractos. ¡Asegúrese de que su densificador funcione en CUALQUIER caso!

Dicho esto, esperamos que hayas disfrutado leyendo. Utilice esta técnica y comparta sus casos de uso con nosotros en Twitter (@ProfDrKSchulte y  @rosariogaunag)  o en los comentarios a continuación.

Gracias por los comentarios en el camino a Jeffery Shaffer, Ken Flerlage y Ludovic Tavernier.

Rosario y Klaus