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 y 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: