El Peldaño que te llevará a dominar DAX: Tres Pasos Primordiales en DAX
«!» Tatúate esto: Todo Crack en DAX; por lo tanto, Máster en Power Pivot, Gurú en Power BI y Promesa en SSAS debe dominar tres cosas al dedillo: Propagación de Filtros, Contextos y VertiPaq Engine.
Al principio e incluso por un período de tiempo significativo puede parecer que estos tres componentes pertenecen a un ambiente divergente en un ecosistema constituido por funciones y fórmulas.
A pesar de la primera impresión, la realidad es más extensa, me explico y siguiendo la analogía ambiental:
DAX es un ecosistema donde la fauna y flora se corresponde con las funciones y operadores del lenguaje, es allí donde recae nuestra atención cuando empezamos a navegar por las aguas de las Expresiones para el Análisis de Dato, pero como todo sistema debe existir un ambiente donde se relacionan (Contextos) y en cuyo hábitat ocurren interacciones (Propagación de filtros)
Así mismo, dicho ecosistema debe estar en equilibro para que se sostenga por sí mismo y de resultados óptimos (VertiPaq Engine)
– Dime más …
Acerca del Ecosistema DAX Engine
Para tomar lo previo en el matiz de los términos en DAX vamos a darles una primera y pequeña definición:
.
- Contexto: Es el ambiente bajo el cual se ejecuta una función o expresión DAX (De hecho, esta siempre es la primera aproximación que doy sobre contextos en nuestros entrenamientos presenciales)
- Propagación de Filtros: Cómo, cuándo y por qué interactúan las distintas tablas en el modelo de datos.
- VertiPaq Engine: A parte de poder crear expresiones DAX de todo tipo es necesario crearlas de manera optimizada, es decir, crear código DAX que se ejecute de la manera más rápida posible (Para ello hay que entender el motor interno, VertiPaq Engine).
.
«!» Nota: Sin embargo, (Y discúlpame de antemano por ser tan radical con la afirmación) Pero sólo un necio se aventura y preocupa por dominar estos tres pilares al mismo tiempo, es necesario seguir una hoja de ruta para ir escalando progresivamente.
Te lo expongo de la siguiente manera, es tanto detalle, variaciones y práctica que el componente de contexto en DAX únicamente se entenderá y verá de manera avanzada hasta el Tomo #5 del Master en DAX y Power Pivot, claro en el recorrido que llevamos ya tenemos un dominio excepcional sobre contextos, no obstante, aún nos falta la parte avanzada.
Así mismo, para optimizar expresiones DAX es necesario escribirlas de múltiples maneras al principio por lo que la optimización de DAX en el Master en DAX y Power Pivot solamente se ve hasta el tomo final.
Para conseguir dominar DAX al 100% es necesario un plan de entrenamiento riguroso y que se debe seguir con disciplina obsesiva.
En este artículo mi intención es darte el día 1 en el Plan 365 Para Cracks en DAX: «Nociones básicas y aproximadas (pero claras) sobre contextos.»
Contextos en DAX (Power BI, Power Pivot, SSAS y más)
– ¿Qué es un Contexto?
Te he mencionado que el contexto es el ambiente bajo el cual se ejecuta la función o expresión DAX
– ¿Qué significa esto?
« El contexto es el pedacito de tabla donde se calcula o va calculando una expresión DAX.»
Vamos paso por paso, para dilucidar correctamente las primeras definiciones de contextos. Vamos a conocer la tabla de datos:
La tabla registra las ventas día a día en el mes de Junio del 2017 para los distintos productos de un restaurante, almacenando cantidad y tiempo de entrega en minutos.
Como ya sabes…
Las medidas implícitas encierran una filosofía más devastadora que el anillo de mordor.
Entonces vamos a crear una sencilla medida explicita que corresponde ala suma de las cantidades, así:
A continuación, elaboremos una matriz con los Product Id en el área de filas y la medida recién creada en el área de valores
– A desmenuzar lo que sobreviene en la matriz
Inicialmente, lo evidente: Cada valor de la medida Quantity Tot es diferente
Perooo …
— ¿Cómo llega Power BI esos resultados? … para acotarlo más:
— ¿Cómo llega Power BI al valor de 299 en la matriz?
Una respuesta con alta probabilidad: «299 representa la cantidad total vendida para el producto con ID 1»
Y sin duda alguna es una respuesta maravillosa
Pero
(Si, siempre hay un pero)
– ¿Por qué los valores varían si la fórmula es exactamente la misma?
— ¿Cómo llega exactamente el DAX Engine de manera interna a ese valor?
Ahora si no es tan evidente
Para ello debemos ser recursivos →
«Espada del Augurio, déjame ver más allá de lo evidente
– León-O.
Bromas de Cartoons de mi infancia aparte, «Entender cómo el DAX Engine llegá a estos valores es clave»
Es más …
Es el peldaño que te llevará a Dominar DAX
Para ello hay que interiorizar los tres pasos primordiales en DAX.
Los Tres Pasos (Internos) Primordiales en DAX
Para cada valor en el área de valores de una medida DAX siempre hay que pensar en estos tres pasos primordiales:
- Identificar Filtros
- Aplicar Filtros
- Ejecutar Expresión DAX
.
Recalco lo siguiente: Para Cada Valor En El área De Valores
Es decir, los tres pasos se aplican para cada «celda» de manera independiente y de manera única ¡No lo olvides!
— ¡No lo olvides!
¿Qué soy insistente?
— Pues ¡No lo olvides!
Sin embargo, lo anterior puede ser algo engañoso
— ¿Engañoso?
En efecto, porque analizar cada «celda» en un objeto visual que no sea una matriz (o tabla dinámica en Power Pivot) puede ser llegar a confuso
Por eso lo que nosotros recomendamos es la metodología:
«!»: Evolución Matriz [Chart Place Holder] a Gráfico
El principio de la metodología es muy sencillo: Primero crea la matriz y luego tranformalo en el objeto visual deseado
¡Eso es todo!
Hay algunos detalles que se debe seguir para que funciones correctamente, pero lo trataremos en otro artículo.
– Identificar Filtros
Como sabemos que se debe analizar «celda» por «celda» vamos a tomar la POSICIÓN que corresponde al valor de: 299
— ¿Cuáles son los filtros?
Todo lo que rodea a la celda y restringe
Para este caso:
- OrderHistoryOfJun2017[Product Id] = 1
.
Visto de otra manera, todos aquellos campos que no están en el área de valores y el elemento respectivo de la celda analizada involucrado en la matriz.
Para ser más precisos, el filtro sería:
Un filtro es una tabla, y dicha tabla lista los elementos quedan visibles en la columna correspondiente al ser aplicado el filtro.
Ahora tenemos la lista de requrimientos (Filtros), es momento de aplicarlos.
– Aplicar Filtros
«!» Un Paréntesis Importante: Para visualizar mejor los 3 pasos primordiales, vamos a tomar una mini-versión de la tabla OrderHistoryOfJun2017, esto quiere decir que el valor resultante no será 299 sino uno muchísimo más pequeño porque es una tabla simplificada.
Dicho con otras palabras: Estamos estudiando la posición donde se encuentra el valor 299.
Habiendo dicho esto sigamos
Ahora es necesario tomar los filtros identificados en el paso 1 y aplicarlos a la tabla:
Y únicamente hasta este punto se ejecuta la Expresión DAX …
– Ejecutar Expresión DAX
La expresión DAX de la medida ahora si entra al juego
¿Quién es la expresión DAX?
La asignada a la medida que estamos analizando
¿Recuerdas le medida que estamos analizado
Así es: Quantity Tot := SUM ( OrderHistoryOfJun2017[Quantity] )
Pero fíjate que sólo hasta ahora se va a ejecutar la expresión DAX, quiere decir que los pasos 1 y 2 se ejecutan siempre primero, SIEMPRE.
¿Qué podemos concluir?
«!» Haz Parte de Tu Ser Esto: La Expresión DAX de la medida se aplica sólo en el pedacito de tabla que queda visibles después de aplicar los filtros.
¿Entiendes?
Se ejecuta en el ambiente (de tablas) que se ha generado previamente
Es por eso el resultado de la fórmula o expresión DAX varia, porque a pesar de ser exactamente la misma para cada «celda» el pedacito de tabla donde se ejecuta cambia debido a los filtros aplicados en ella.
La expresión DAX es la misma, pero el ambiente (Contexto) donde se ejecuta varia.
De ahora en adelante cada vez que mires un valor piénsalo y analízalo en términos de estos tres pasos primordiales en DAX.
Piénsalo siempre así hasta que sea completamente automático, hasta que piensen instintivamente como el DAX Engine
Convirtelo en un tu mantra. Así iras en el mejor camino para dominar DAX.
«!» Una Recomendación: Tanto si estas empezando con DAX como si llevas un buen recorrido, te recomiendo que leas este artículo y el de propagación de filtros, después el capítulo 7 del libro El ADN de Power Pivot, así empezarás a interiorizar cómo funciona el DAX Engine e iniciarás a labrar tu camino como un Crack en DAX.
Esto es solo el principio
– Debo ser honesto contigo:
Lo anterior es sólo una primera aproximación básica del contexto de filtro, es más, no hemos discutido ni hablado del contexto de filtro en sí, tan sólo hemos dado luz a una parte del contexto de evaluación, pues el objetivo de este artículo es que te familiarices con los tres pasos primordiales en DAX.
– Noooooo ¿De verdad?
Citando a la Chimoltrufia: «Para qué te digo que no, si sí» de hecho, derivan dos cosas:
- Es una aproximación básica, quiere decir que debemos ir haciendo aproximaciones sucesivas
- Contexto de Filtro, lo anterior corresponde al contexto de filtro, que es uno de los dos contextos de evaluación, es decir, hay más contextos
.
Los contextos son Dos: Contexto de Fila y Contexto de Filtro, los cuales quedan cobijados bajo el nombre de contextos de evaluación, a el contexto de evaluación es el que le damos la definción de: el pedacito de tabla que quedan visible, por ello la definición y detalle del contexto de filtro requiere de su propio artículo, así como la del contexto de fila, ya que son conceptos diferentes.
Para darnos una idea del mapa, planteo las siguientes incógnitas:
…
– ¿Cómo funcionan los tres pasos cuando hay múltiples tablas relacionados?
– ¿Qué sucede si hay relaciones bidireccionales?
– ¿Se puede modificar el contexto de filtro?
– ¿Se puede alterar el pedacito de tabla que es visible para la expresión DAX?
– ¿Puede existir más de un contexto de filtro a la vez?
– ¿Todos los contextos pueden actuar en simultaneo?
– ¿Se puede ignorar un contexto?
– ¿Es posible cambiar el orden de ejecución de los pasos?
– ¿Se puede transformar un contexto a otro?
– ¿Se puede perder y/o heredar los contextos?
– ¿Es posible la existencia de varios contextos de filtros y varis contexto de fila?
…
Con tan solo entrever algunas preguntas podemos notar que hay un amplio mundo por conocer
¿Te gustaría que avancemos más en contextos?
Entonces te pido un favor: Comparte este post en tu red social favorita y comenta en la sección de comentarios qué te ha parecido esta primera introducción
Eso es todo de mi parte por el día de hoy
– Hasta la próxima oportunidad