Diferencias entre agregar y no agregar valores al usar cálculos calculados

Uno de los aspectos más importantes a la hora de mejorar en el uso y comprensión de Tableau es sin duda conocer bien que tipo de cálculos está haciendo Tableau en cada momento y los resultados que vamos a obtener de forma que no sólo podamos trabajar más rápido, sino que además evitemos muchos errores, algunos de ellos con consecuencias bastante graves si a tomar decisiones importantes utilizando dichos datos.
Respecto a este punto, resulta por tanto esencial comprender las diferencias entre agregar o no agregar nuestras Medidas (Measures) al utilizar Campos Calculados (Calculated Fields) y pensar bien en los tres principales niveles de agregación que podemos realizar, que son los siguientes:
  1. Cálculos a nivel de fila: aquellos que se realizan en cada una de las filas de nuestra base de datos y se procesan junto con la query que Tableau envía a la base de datos.
  2. Cálculos agregados: aquellos que se realizan de forma agregada pero también procesados junto con la query a la base de datos.
  3. Cálculos de tabla (Table Calculations): se ejecutan también de manera agregada, pero no como parte de la query a la base de datos, sino que una vez la query se ha ejecutado y la base de datos devuelve a Tableau datos agregados, estos se almacenan en la cache y los cálculos de tabla se realizan justo antes de la visualización de resultados.
¿Pero cuáles son las implicaciones de cada tipo?
Imaginemos que tenemos esta sencilla base de datos con 10 registros y 4 dimensiones: ID, zona, número de productos vendidos e importe de la venta en euros:
Y vamos a crear un Campo Calculado (Click en el menú Análisis > Crear Campo Calculado), que llamaremos Ventas / Numero de Productos para conocer el importe medio de cada producto en cada una de esas transacciones con la siguiente sintaxis:
Si a continuación vemos la base de datos en Tableau haciendo click en el botón derecho en la base de datos y seleccionando Ver Datos, veremos lo siguiente:

 

Es decir, Tableau ha realizado la división de la dimensión importe de la venta entre el numero de productos vendidos para cada registro de la base de datos. Si visualizamos la base de datos completa en Tableau en nuestra visualización, parecería que todo funciona perfectamente:
El problema viene cuando utilizamos este campo para visualizar el dato no a nivel de cada registro, sino por ejemplo para el total de cada zona. Es decir, saber en cada zona, la venta media por unidad de producto o a nivel total. Si creamos una visualización para responder a estas preguntas, obtenemos lo siguiente:
Si hacemos los cálculos a mano, 11.653 divido por 9 es 1294,77 ¿por qué Tableau nos da entonces 5.667? La clave está en el modo en el que Tableau ha realizado la operación. Al no haber agregado previamente en nuestro campo calculado, Tableau realiza la división en cada fila y luego nos da el resultado sumado. Es decir, volviendo a la imagen inicial, Tableau está realizando dicha divisi’on en cada fila y luego sumando los valores de cada uno de los recuadros que vemos a continuación, correspondientes a la zona A, B y C:
Para solucionar esto, lo que debemos hacer es trabajar a nivel agregado en nuestro Campo Calculado. Veamos la diferencia creando un nuevo campo calculado con la siguiente sintaxis:
De este modo, si creamos de nuevo una tabla con el máximo nivel de desagregación, el resultado es idéntico en ambos campos calculados:
Pero las diferencias saltan a la vista cuando queremos ver, como al inicio, la venta media por cada producto:
Aquí es donde vemos que utilizando el cálculo agregado los resultados son correctos, ya que lo que Tableau está haciendo en este caso es sumar todas las Ventas de cada zona por un lado, sumar el numero de productos de cada zona por otro lado, y luego realizar la división de cada uno de dichos valores, en vez de sumar los resultados de cada división a nivel de fila al igual que para el Total.
De ahí la importancia de aprender como opera Tableau con los datos y saber qué tipo de cálculo nos conviene en cada caso. En general, cuando trabajamos con cálculos que pueden ser diferentes dependiendo del nivel de agregación y el orden de la operación es preferible trabajar con agregaciones, ya que nos aseguramos de que el cálculo se realiza en el momento adecuado, mientras que trabajar con cálculos a nivel de fila es preferible cuando queremos asignar valores no agregables a nuestros datos.

One Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *