Ads Top

El Orden de Operaciones de Tableau

Click here to read in English. 


Nota: No hablo español. He usado varias herramientas para traducir esto del inglés al español, así que es probable que mi gramática sea imperfecta. Sin embargo, espero que sea legible y comprensible. Quiero dar un gran agradecimiento a Nerea Cid, Jefe de Analítica de CHECK24 Vergleichsportal GmbH, por su retroalimentación y ayuda en el ajuste de la traducción.


En mi opinión, el orden de las operaciones en Tableau es un tema con el que todos los usuarios de Tableau deben estar íntimamente familiarizados. Si no comprendes el orden de las operaciones, te sentirás constantemente frustrado al intentar solucionar un problema que no funciona como esperaba. 

 

Por ello, en este blog, voy a presentar brevemente el Orden de operaciones y cada uno de sus componentes y compartiré cinco problemas comunes con el Orden de operaciones, junto con cómo abordarlos.

 

¿Qué es el Orden de Operaciones?

El orden de operaciones en Tableau es similar al orden de operaciones en matemáticas, que todos aprendimos al principio de nuestras carreras escolares. ¿Lo recuerdas?—primero vienen los elementos entre paréntesis, luego las potencias, luego la multiplicación y la división, seguida de la suma y la resta. 

El orden de operaciones de Tableau es bastante similar, lo que indica el orden entre las distintas operaciones en Tableau —filtros, campos calculados, y otras funciones de Tableau —ejecución y / o de cálculo. Aquí está el orden de operaciones de Tableau.

 

Orden de operaciones de Tableau

 

A la izquierda, podemos ver los principales tipos de filtros y, a la derecha, podemos ver otros tipos de funciones de Tableau, como cálculos de LOD (nivel de detalle), cálculos de tablas, totales y líneas de referencia. El orden fluye de arriba hacia abajo. Es importante tener en cuenta que el orden de operaciones no incluye todas las funciones de Tableau. Por ejemplo, el estante Páginas no está incluido (si desea que Tableau cree un Orden de operaciones más detallado, vota a favor de lo siguiente: Documentación mejorada del Orden de operaciones). Sin embargo, incluso sin todos los componentes, el gráfico es una herramienta bastante útil para comprender cómo funciona Tableau y es particularmente útil cuando se está solucionando un problema.


No voy a explicar cada una de estas características en detalle, pero repasemos rápidamente el orden. Como podemos ver, la primera característica que se calcula son los Filtros de Extracción, seguidos de los Filtros de Fuentes de Datos (si quieres saber más sobre la diferencia entre estos dos filtros, consulta esta gran discusión Diferencia entre filtros de extracción y filtros de origen de datos).


Los siguientes por orden son los Filtros de Contexto, seguidos de los Conjuntos (Sets), Filtros Condicionales, Filtros de N Principales, y expresiones de Nivel de Detalle (LOD) Fixed, seguidos de los Filtros de Dimensión. Como veremos en la próxima sección de Problemas Comunes, aquí es donde a menudo comenzamos a ver una variedad de problemas con el orden de operaciones. Esto se debe a que debemos pensar detenidamente si queremos que nuestro filtro se aplique antes o después de cosas como los filtros N Principales y los LOD Fixed. Aquellos filtros que necesitan computar antes deberán convertirse a filtros de contexto. Aquellos que necesitan computar después pueden seguir siendo filtros de dimensión (el predeterminado).

 

A continuación, tenemos Nivel de Detalle (LOD) Include/Exclude y Combinación de Datos (Blending). Si bien podría parecer que tendríamos problemas similares con los LOD de Include/Exclude que con los LOD Fixed, esos problemas son mucho menos pronunciados, ya que se calculan después de los filtros de contexto y los filtros de dimensión. Por lo tanto, el hecho de que utilice un filtro de contexto o dimensión tiene poco efecto sobre cómo se calculan los LOD de Include/Exclude. Dicho esto, como veremos a continuación, podemos convertir nuestros LOD Fixed en LOD de Include/Exclude para engañar al orden de operaciones.

 

A continuación, tenemos los Filtros de Medida, que en mi experiencia no suelen causar muchos problemas con el orden de operaciones.

 

Luego tenemos Pronósticos, Cálculos de Tabla, Clústeres, y Totales, seguidos de Filtros de Cálculos de Tablas. Esta es otra área en la que comenzamos a encontrarnos con algunos problemas de orden de operaciones. Como veremos más adelante, esto se debe en gran medida a la naturaleza de los cálculos de las tablas y a cómo se calculan.  


Por último, los últimos elementos en el Orden de Operaciones son Líneas de Tendencia y Líneas de Referencia. Estas siempre se calcularán como último elemento.

 

Problemas Comunes con el Orden de Operaciones

Ahora que presentamos el Orden de operaciones, hablemos de algunos de los problemas más comunes de Orden de operaciones. Para ser claros, estos no son los únicos problemas que encontrarás, pero en mi experiencia, tienden a ser cosas con las que tenemos que lidiar con bastante regularidad.

 

1) Filtros de Dimensión y Contexto con LOD Fixed

Comencemos con un ejemplo con los datos de muestra de Tableau “Supertienda”. Tenemos una lista de clientes en la que algunos han hecho varios pedidos y queremos saber la fecha del primer pedido de cada cliente. Para ello, primero creamos una expresión de nivel de detalle (LOD) Fixed con la cual podemos obtener la fecha del primer pedido.

 

Fecha Primer Pedido

// Consigue el primer pedido para el cliente. {FIXED [Nombre del cliente]MIN([Fecha del pedido])}

 

Luego, creamos una vista que muestra a cada cliente con la fecha de su primer pedido.

 


Esto funciona muy bien, pero ¿qué sucede si se desea aplicar algunos filtros? Por ejemplo, filtremos por Categoría y seleccionemos solo Mobiliario Tecnología.

 


Era de esperar que Tableau nos muestre las fechas del primer pedido solo para esas dos categorías, pero como puede ver arriba, las fechas permanecen sin cambios. 

Entonces, ¿qué está pasando aquí? Desglosémoslo en términos del orden de operaciones. Tenemos un Filtro de Dimensión en Categoría y tenemos una expresión LOD Fixed.



Como podemos ver, la LOD Fixed viene antes que el filtro de dimensión. Por lo tanto, la se LOD calcula primero, encontrando la fecha general del primer pedido para cada cliente. Sólo después de que Tableau haya calculado la fecha del primer pedido, filtra la vista. Por eso las fechas no cambian. Para ser claros, el filtro de dimensión no es totalmente inútil en este caso sino que eliminará a cualquier cliente que no haya comprado ningún mueble o tecnología. El problema es que simplemente no tendrá ningún impacto en las fechas.

 

Si queremos forzar el cálculo del filtro antes del LOD, necesitamos cambiarlo a un filtro de contexto. Podemos hacer esto haciendo clic derecho en el filtro y eligiendo "Añadir a contexto". Notarás la diferencia visualmente ya que los filtros de contexto se muestran como píldoras grises.

 


Como ahora es un filtro de contexto, se calculará antes de la LOD, por lo que cambian los valores de la Fecha del Primer Pedido.

 


Este es, en mi opinión, probablemente el problema de orden de operaciones más común, por lo que es realmente importante comprender cómo funcionan los filtros de dimensión y contexto con LOD Fixed.

 

2) Fixed, Exclude, y Include LOD… ¡¡Oh, Dios Mío!!

A veces te puedes encontrar en una situación en la que necesitas un solo filtro para calcular antes de una LOD pero después de otra. Esencialmente, necesitas este filtro para actuar como un filtro de contexto en algunos casos y un filtro de dimensión en otros. Desafortunadamente, un filtro solo puede ser uno u otro, por lo que nos encontraremos en un aprieto de Orden de operaciones. Por ejemplo, tomemos nuestra vista desde arriba y agreguemos un requisito más. Deseamos comparar las ventas máximas de cada cliente para las categorías seleccionadas (basadas en el filtro) con las ventas máximas para todas las categorías. Ambos campos calculados usarán el mismo LOD:

 

Ventas Máximas - Filtrado

// Máximas ventas para el cliente.

{FIXED [Nombre del cliente]MAX([Total])}

 

Ventas Máximas - Todos

// Máximas ventas para el cliente.

{FIXED [Nombre del cliente]MAX([Total])}

 

Sin embargo, queremos que el filtro de categoría se calcule antes de las Ventas Máximas - Filtrado, pero después de las Ventas Máximas - Todos. Esto simplemente no es posible porque, como señalamos anteriormente, un filtro no puede ser tanto un filtro de dimensión como un filtro de contexto.

 

Entonces, ¿cómo abordamos esta necesidad? Bueno, en primer lugar, necesitaremos cambiar el filtro de contexto a un filtro de dimensión porque no hay tipos de LOD que se puedan calcular antes que los filtros de contexto. Ahora que nuestro filtro es un filtro de dimensión, ambos LOD se calcularán antes que el filtro, dándonos los mismos valores.

 


Pero tenemos que encontrar una manera de mover Ventas Máximas - Filtrado en la Orden de Operaciones por lo que calcula después el filtro. Podemos hacer esto de dos formas. Podemos o bien cambiar el cálculo de usar un LOD incluir o excluir o podemos cambiarlo para utilizar una Cálculo de Tabla ya que todos estos cómputo después de los filtros de dimensión.

 


Aquí hay un LOD Exclude que debería funcionar:

 

Ventas Máximas – Filtrado

// Ventas máximas para el cliente (LOD Exclude).

{EXCLUDE [Fecha Primera Orden]MAX([Total])}

 

Y el cálculo de la tabla se vería así:

 

Ventas Máximas - Filtrado

// Ventas máximas para el cliente (cálculo de tabla)

WINDOW_MAX(MAX([Total]))

 

Mientras que algunas de las ventas máximas filtradas coincidirán con las ventas máximas totales (porque las ventas máximas para estos clientes fueron para Muebles o Tecnología), podemos ver algunos casos en los que difieren, lo que indica que nuestros cálculos funcionaron.

 


3) Filtros de Dimensión y Contexto con Filtros N Principales

En el número 1, abordamos los problemas con filtros de dimensión, filtros de contexto y LOD Fixed. El tercer problema que abordaremos es similar, pero aborda los filtros N Principales (Top N) en lugar de las expresiones LOD Fixed.

 


Para este ejemplo, crearemos una vista que muestre los 15 clientes principales por ventas. Lo hemos hecho creando un filtro N Principales arrastrando el nombre del cliente a la parte de Filtros. También tenemos un filtro de dimensión en el año de la fecha del pedido.

 


En este caso, nuestro valor de Ventas es solo una agregación normal; no estamos usando ninguna LOD, por lo que están fuera de la imagen.

 

Esto funciona muy bien—podemos ver de forma muy simple a nuestros 15 clientes principales. El problema aparece cuando seleccionamos solo el año 2017, nuestro filtro N Principales parece que se rompe ya que ahora sólo tenemos el top 12.

 


Entonces, ¿qué está pasando aquí? Una vez más, veamos el orden de operaciones y desglosémoslo. Tenemos un filtro N Principales y un Filtro de Dimensión como se muestra a continuación.

 


Pero, como podemos ver, el filtro N Principales calcula antes que el filtro de dimensión. Así, Tableau es conseguir primero la parte superior general del 15 de toda la información conjunto. Una vez que se calcula entre los 15 primeros, se aplica el filtro Año. En este caso, 3 de nuestros 15 principales no tuvieron ventas en 2017, por lo que se eliminan de la vista, dejándonos con solo 12.

 

Si queremos asegurarnos de que nuestro filtro N Principales calcule después de nuestro filtro Año, entonces la solución es la misma que en el # 1. Simplemente agregamos el filtro Año al contexto.

 


Nota: Es posible agregar un filtro N Principales al contexto, convirtiéndolo en un filtro de contexto y un filtro N Principales. En este caso, se computará como un filtro de contexto, antes de los LOD Fixed, otros filtros N Principales, etc.

 

4) Index vs N Principales

Este no es tanto un problema como algo que me gustaría señalar. A menudo veo personas que usan INDEX para mostrar los N Principales. Para usar el ejemplo del número 3, podríamos crear un campo calculado INDEX() y luego usarlo como filtro, manteniendo los valores 1-15. 

 


En este caso, no importaría si el filtro Año se trata de un filtro de contexto o un filtro dimensión (Nota: Esto podría afectar al rendimiento, pero no afectará a la funcionalidad). Esto se debe a que el filtro de INDEX es un filtro de cálculo de tabla, que se calcula casi al final del Orden de operaciones sólo por delante de las líneas de tendencia o referencia.

 


Entonces, ¿cuándo debería usar un filtro N Principales frente a INDEX? Como es casi siempre el caso, depende—de qué otros tipos de filtros y características se están utilizando en su vista, cuando se desea que el filtro se compute, etc. Mi recomendación general es usar un filtro N Principales como predeterminado ya que estos tienden a ser más sencillos y no vienen con las complejidades inherentes de los cálculos de tablas. Pero, cuando sea necesario, INDEX puede ser una gran opción para realizar un filtro N Principales.

 

5) Cálculos de Tabla y Filtros de Cálculos de Tablas

Ya que estamos en el tema de los cálculos de tablas, mi último problema común de Orden de operaciones tratará con estas bestias. Para este ejemplo, he creado una hoja de trabajo que clasifica cada ciudad/estado por ventas usando un cálculo simple de RANK.

 


Lo que queremos es poder filtrar esto por estado, pero aún así ver los rangos nacionales. Si simplemente filtramos por Estado, entonces el rango se recalcula como se muestra a continuación.

 


Esto, por supuesto, se debe al orden de operaciones.

 


Los cálculos de tabla se calculan después de los filtros de dimensión, por lo que la vista se filtra primero y luego se calcula la clasificación. Entonces, ¿cómo nos aseguramos de conservar la clasificación general original, mientras filtramos la vista? Para hacer esto, necesitamos que el filtro de estado se calcule después del cálculo de la tabla. Y el único filtro que se calcula después de los cálculos de tabla son los filtros de cálculo de tabla. Entonces, si de alguna manera podemos forzar a nuestro filtro de estado a ser un filtro de cálculo de tabla, esto debería funcionar. Para hacer esto, podemos usar un truco que aprendí de la increíble Pooja Gandhi. Podemos usar LOOKUP con un desplazamiento de 0 como se muestra a continuación.

 

Estado TC

// El estado de fuerza será una tabla de cálculo...

// ...para que se calcule después del rango.

LOOKUP(MAX([Estado]), 0)

 

Entonces podemos usar esto como nuestro filtro.

 


Debido a que los filtros de cálculo de tabla se calculan después de los cálculos de tabla, primero se calcula la clasificación y luego se filtra la vista, lo que nos permite mantener la clasificación general de cada ciudad.

 

Este es uno de mis trucos favoritos de todos los tiempos; es posible que incluso lo veas en un próximo blog de consejos. Puede parecer algo que sólo se usaría en situaciones raras, pero en realidad me encuentro usando esto todo el tiempo para engañar a la Orden de Operaciones y hacer que Tableau haga cosas asombrosas.

 

Y este truco de LOOKUP es solo un ejemplo en el que podemos usar los filtros de cálculo de tabla de esta manera. No mostraré esto en detalle, pero un escenario común es donde podría estar usando un cálculo de tabla para mostrar el cambio año tras año, pero sólo se desea mostrar el último año. Los cálculos de tabla, para que se calculen correctamente, requerirán que tenga el año anterior en la vista. Sin embargo, podemos utilizar la tabla Calc Filtros, utilizando funciones tales como LAST para filtrar los años innecesarios después de la calc tabla se ha calculado.

 

Y Eso Es Todo, Amigos

Comprender el orden de operaciones de Tableau es absolutamente fundamental para obtener un conocimiento profundo y un dominio de Tableau. Sin este conocimiento, te encontrarás constantemente confundido acerca de por qué el software está haciendo lo que está haciendo. Pero, una vez que comprenda el orden de las operaciones, podrás hacer que Tableau haga casi cualquier cosa que puedas imaginar.

 

Aunque sólo os he mostrado un par de ejemplos concretos en este blog, espero que podáis imaginar cómo podríais aplicar estas técnicas básicas a vuestro propio trabajo, aunque vuestros escenarios no sean exactamente los mismos que he mostrado. Además, es importante señalar que mis ejemplos sólo han arañado la superficie. Mi objetivo era mostrarle algunos de los problemas más comunes del Orden de Operaciones que he encontrado personalmente. Pero hay muchos otros escenarios que seguramente encontrarás en tu trabajo. Dicho esto, te aseguro que si aprendes el Orden de Operaciones y cómo aplicarlo, no hay casi nada que no puedas superar.


Como siempre, gracias por leer este blog y no dudes en compartir tus pensamientos en la sección de comentarios a continuación.


Ken Flerlage, 28 de septiembre de 2020

Twitter | LinkedIn | GitHub | Tableau Public

  

No hay comentarios:

Con la tecnología de Blogger.