Home
» Power BI
»
Funciones de iteración en lenguaje DAX: un ejemplo detallado
Funciones de iteración en lenguaje DAX: un ejemplo detallado
Para esta publicación de blog, quiero sumergirme en las funciones de iteración dentro del lenguaje DAX en LuckyTemplates. La razón por la que quiero pasar un tiempo mostrando lo que puede hacer dentro de las funciones de iteración es porque es un concepto tan importante que necesita aprender muy bien. Puede ver el video completo de este tutorial en la parte inferior de este blog.
Es posible que solo haya completado algunas SUMAS simples o que haya usado potencialmente la función PROMEDIO, pero también es importante comprender cómo usar las funciones de iteración que tienen una X al final , como: SUMX, AVERAGEX o COUNTX.
La razón es que puede avanzar mucho más dentro de una función de iteración que con una función de agregación.
Si aún no está familiarizado con lo que es una función de iteración, es una función en el lenguaje de fórmulas DAX que generalmente tiene una X al final. También tiene funciones de tabla que iteran a través de una tabla como FILTRO o VALORES, pero en este caso nos ocuparemos únicamente de SUMX.
Si observa nuestra fórmula para Ventas totales, puede que esta sea una función iterativa debido al SUMX. Iterar significa iterar a través de cada fila y hacer un cálculo. En este caso, para cada fila de la tabla Ventas, estamos multiplicando la cantidad por el precio actual. También vamos a volver a la tabla Producto usando la función RELACIONADO para obtener el precio actual.
Quiero mostrarle cómo puede escribir funciones de iteración realmente complejas que extraen una gran perspectiva que quizás desee obtener en sus datos. Para este tutorial, quiero calcular cuántas ventas hacemos por encima de un precio determinado. En este caso, vamos a seleccionar $2,000.
También quiero saber cuáles son nuestras ventas mensuales de productos que superan los $2000, pero donde alguien compra más de un producto. También queremos ver qué tan bien se compara con nuestras Ventas totales. Este es el tipo de complejidad que se puede lograr escribiendo solo una fórmula y usando una función de iteración.
Precio de venta superior a $ 2000
Vamos a crear una medida y llamarla Precio de venta > $2000 y Cantidad > 1 . En general, tendría que escribir algunas columnas diferentes o algunas medidas diferentes para ver la respuesta aquí, pero le mostraré cómo puede hacerlo con solo una. Voy a comenzar con SUMX y aquí dice que necesitamos ingresar una tabla, ¿no?
Así que vamos a abordar este desafío de Cantidad > 1 creando una tabla que no es toda la tabla de Ventas, sino una tabla que ya ha filtrado todo lo que solo se vio una vez. Usaremos FILTRO aquí ya que es una función de tabla, por lo que puede colocar cualquier tipo de tabla dentro. Luego iremos con Ventas e iteramos a través de cada fila en la tabla Ventas dentro de esta función FILTRO y filtraremos cada fila con una cantidad mayor que uno.
Por cada venta superior a 1, también quiero crear una lógica adicional. Voy a escribir un patrón de expresión y usar SWITCH aquí. Vamos a decir que si la venta tiene un precio actual mayor o igual a $2000, entonces quiero calcular las Ventas Totales. Si no es así, entonces no quiero calcularlo en absoluto. Por último, pondré 0 como resultado alternativo.
Así es como se escriben algunas fórmulas de iteración bastante complejas en el lenguaje DAX. La parte clave es simplemente comprender qué tipo de tablas puede colocar allí y saber qué está haciendo la iteración real .
En este caso, para cada fila en esta tabla de filtrado hacia abajo, estoy evaluando cuál es el precio actual que es mayor a $2000. Si es así, contamos las ventas de esa fila y si no es así, entonces es solo 0.
Una vez que arrastre esta medida a la tabla, verá que los resultados son similares a los que logramos en el primer gráfico; la única diferencia es que esto es a diario.
Precio de venta superior a $500
Podemos crear información adicional aquí reutilizando el mismo patrón. Si quisiéramos ver lo que estaba por encima de $ 500, todo lo que tenemos que hacer es hacer algunos pequeños cambios aquí, presionar Intro y luego arrastrar esto también a la tabla.
Obviamente, podemos ver una gran diferencia porque hay más productos que estamos contando. Esto se debe a que no nos estamos deshaciendo de tantos productos de precio más alto o más bajo como antes con los $2000.
Visualización de los datos
También podemos convertir esto en una visualización , sin embargo, como puede ver, el gráfico se ve un poco ocupado, por lo que probablemente sea mejor permanecer en la tabla, o podemos hacer que el período de tiempo sea más condensado como el gráfico de la izquierda.
Con suerte, podrá evaluar y comprender hasta dónde puede llegar con estas funciones de iteración dentro del lenguaje DAX. Puede comenzar a sumergirse realmente en cualquier aspecto de sus datos o extraer información muy específica. La forma de hacerlo es mediante el uso de este contexto de fila, que le permite acceder realmente a estas funciones de iteración. Puede mirar una fila individual, ponerla dentro o fuera de su cálculo y usar las funciones de iteración como SUMX, AVERAGEX y COUNTX.
Las funciones de iteración le brindan mucha más flexibilidad en términos de los cálculos que puede hacer a nivel de fila en comparación con las agregaciones que solo le permiten agregar una columna completa. Ahora, dentro de las funciones de iteración, primero debe ingresar una referencia de tabla y luego una expresión, pero ciertamente expanda su mente en términos de lo que cualquiera de estos puede ser realmente.
Dentro de las funciones de iteración, puede colocar dentro de cualquier tabla o cualquier derivado de una tabla... también cualquier tabla virtual o referencia a la tabla. Eso permite mucha más flexibilidad de la que normalmente tendría si solo usara una tabla completa como su tabla de transacciones para ejecutar algo de lógica.
La expresión (o medida) que ingrese también puede ser muy avanzada. Puede usar la lógica IF avanzada o la lógica SWITCH, o básicamente cualquier cosa que pueda hacer a nivel de fila dentro de una columna calculada. De hecho, puede ponerlo en esa expresión como parte de una función de iteración.
Conclusión
La conclusión clave de esta publicación es que las funciones de iteración son increíblemente importantes para comprender y aprender bien dentro de LuckyTemplates.
Si aprende esto bien, entonces las oportunidades de ejecutar cálculos internos en la memoria a través de medidas se vuelven realmente poderosas.
Consulte la si recién está comenzando con el lenguaje DAX y LuckyTemplates. Mucho que aprender en este curso gratuito. Puede encontrar esto en .