A medida que se familiarice más con las fórmulas DAX , utilizará estas funciones de iteración mucho más de lo que piensa. Son mucho más versátiles que las funciones de agregación simples como SUMA o PROMEDIO .
Tengo algunos ejemplos aquí, y quiero trabajar con la lógica en cada uno de estos ejemplos para que pueda obtener una muy buena comprensión de lo que realmente sucede cuando la lógica se ejecuta a través de estas fórmulas.
La clave de las funciones de iteración es que iteran a través de algo.
En este caso, quiero resumir algo pero quiero iterar a través de cada fila en esta tabla de Ventas.
Y luego, en cada fila, quiero ejecutar esta lógica específica aquí.
Pasemos rápidamente a nuestra tabla de ventas muy simple, donde quiero ejecutar algo de lógica en cada fila. Y luego quiero multiplicar Cantidad por Precio.
El precio no existe en esta tabla. Y para este modelo en particular, en realidad está en la tabla Producto.
Lo siguiente que debo hacer es volver a mi tabla Product y puedo hacerlo con RELATED . Cuando estamos calculando la cantidad por el precio relevante, hacemos esto para cada fila. Esto es exactamente lo que está sucediendo dentro de esta fórmula.
Estos son los conceptos clave para recordar cuando comenzamos a hacer cosas más avanzadas.
Un enfoque alternativo para obtener ventas usando SUMX
En este ejemplo, tengo SUMX iterando a través de la tabla Ventas nuevamente. Así que ejecutamos esa lógica en cada fila y calculamos la cantidad por el precio en cada fila y luego la agregamos una vez que se realiza toda la iteración.
Verá aquí que este resultado es exactamente el mismo que los resultados en el primer ejemplo (SUMX Tutorial 2) o las Ventas Totales.
Puede colocar una gran variedad de cosas diferentes aquí: puede ser una medida y puede ramificarse con una función de iteración. No tiene que hacer referencia a columnas específicas para obtener los cálculos correctamente.
Como puede ver aquí, todo lo que he hecho es colocar una medida (Ventas totales) aquí y obtengo exactamente el mismo resultado.
SUMX y funciones lógicas
Estoy usando SUMX aquí, pero también es relevante para AVERAGEX , MINX y MAXX . Son todas cosas muy parecidas.
Otra cosa clave para recordar con estas funciones de iteración es que ejecutan la lógica en cada fila y guarda el resultado en la memoria.
Una vez que todos esos valores se guardan en la memoria, se realiza el cálculo general, como una SUMA o un PROMEDIO .
Volviendo a nuestro ejemplo, puede ver aquí que la cantidad en esta columna es ligeramente menor que las columnas anteriores.
Con la función de iteración SUMX , quiero recorrer cada fila de la tabla Ventas. Y en cada fila, quiero calcular si esa venta en particular es mayor a $2,000. Si es así, quiero calcular las Ventas totales para esa fila. Pero si el total de la venta fue menos de $2000, entonces quiero devolver cero. Entonces solo quiero calcular las ventas de mayor valor.
Algunas personas sugerirán que simplemente podría poner la lógica dentro de una columna calculada. Pero no queremos hacer eso porque hay una manera mucho mejor de ejecutar esta lógica dentro de DAX en lugar de ponerla físicamente dentro de una columna.
Iterando a través de tablas
Aquí es donde las funciones de iteración son realmente asombrosas. No solo puede iterar a través de una tabla física como lo hicimos antes, sino que también puede iterar a través de alguna otra tabla virtual que ingrese como parámetro.
Vamos a pensar que cada resultado aquí tiene un contexto específico. En este caso particular, tenemos el contexto del cliente.
En este contexto, quiero iterar a través de cada ubicación y quiero ver si un cliente en particular ha alcanzado ventas por encima de $5,000.
Si es así, quiero calcular las ventas totales. Pero si no es así, quiero que devuelva cero.
Entonces, en este caso particular, estoy calculando las ubicaciones de alto valor en las que este cliente está comprando y las ventas totales que están realizando en esas ubicaciones.
Lo que VALUES está haciendo aquí es crear una tabla virtual. Entonces SUMX ni siquiera está trabajando en nada físico aquí. En realidad, está trabajando sobre algo que es totalmente virtual.
Iteración simple usando MINX
Esto es similar a los ejemplos anteriores, pero en lugar de SUMX , vamos a ejecutar algún otro tipo de agregación una vez que iteramos a través de cada fila.
En este caso particular, estamos escribiendo a través de cada ubicación para cada cliente y calculando las ventas totales para cada una de esas ubicaciones.
Entonces queremos devolver la cantidad mínima de la ubicación donde compraron.
Iteración simple usando MAXX
También estoy haciendo algo similar aquí solo para mostrarte la versatilidad de iterar funciones. Estoy revisando cada ubicación para ver sus ventas pero luego devolviendo el máximo de esas ventas de ubicación, razón por la cual estamos viendo números más altos aquí.
Conclusión
El tema clave que quería tocar en este artículo es el rango de opciones que tiene dentro de una función de iteración frente a una simple suma o un promedio.
Una vez que comience a profundizar en cálculos más complejos, verá cuán esenciales son estas funciones particulares para devolver valores a nivel de contexto.
Hay tanta versatilidad y tantas formas en que puede ejecutar estos cálculos usando una fórmula simple si solo sabe cómo manipular los parámetros.
Si disfrutó aprendiendo sobre estas funciones de iteración , puede navegar a través de estos enlaces para obtener más información sobre este tema: