Valentina Granada Ospina
José Jesús Palacios
Las funciones de iteración en DAX, conocidas como funciones X, te permiten calcular métricas fila a fila dentro de una tabla, evitando errores comunes que aparecen cuando usas agregaciones simples como SUM. Si trabajas con Power BI y necesitas resultados precisos en cálculos como ventas posibles o precios con impuestos, dominar estas funciones cambia la forma en que modelas datos.
¿Por qué SUM no siempre da el resultado correcto?
Cuando intentas multiplicar dos columnas con SUM, el motor calcula primero la suma total de cada columna y luego las multiplica entre sí. Eso rompe la lógica del cálculo.
Imagina que tienes una tabla con modelo, precio y stock, y necesitas saber la posible venta. Si defines la medida como SUM(precio) * SUM(stock), el gran total que aparece en la tabla no coincide con la realidad del negocio. El problema está en que multiplicas totales, no filas individuales.
¿Qué es un contexto de fila en DAX? Es un cálculo que se ejecuta línea por línea sobre una tabla, evaluando cada registro de forma independiente antes de sumarlo al resultado final.
¿Cuándo conviene usar una columna calculada?
Una salida posible es crear una columna calculada con precio * stock y luego sumarla. El resultado llega correcto, por ejemplo 9.233.120 en el caso del ejercicio con la tabla foto vehículo.
El detalle es que las columnas calculadas no son la opción más óptima: ocupan espacio en el modelo y se calculan al cargar los datos, no de forma dinámica. Aquí es donde entran las funciones X como alternativa más eficiente.
¿Cómo funciona SUMX para calcular ventas reales?
SUMX itera fila a fila sobre una tabla y devuelve la suma de la expresión que tú le indiques. Es la respuesta natural cuando necesitas multiplicar columnas antes de agregar.
La sintaxis del ejercicio queda así:
DAX Posible Venta 3 = SUMX(FotoVehiculos, FotoVehiculos[stock] * FotoVehiculos[precio])
Al llevar esa medida a la tabla, el resultado coincide con el de la columna calculada, pero sin sobrecargar el modelo. SUMX recorre cada fila, multiplica stock por precio, y luego suma todos esos resultados parciales.
¿Cuándo debo usar SUMX en lugar de SUM? Úsalo cuando el cálculo dependa de operaciones entre columnas en cada fila, como multiplicaciones, condicionales o fórmulas con varias variables.
¿Cómo aplicar SUMX al cálculo de precio con IGV?
Un segundo ejercicio sobre la tabla FacVentas lo deja aún más claro. Necesitas obtener el precio de venta real, es decir, el precio sin IGV más el impuesto correspondiente.
La medida queda:
DAX Precio Venta Real = SUMX(FacVentas, FacVentas[Precio Venta sin IGV] * FacVentas[IGV] + FacVentas[Precio Venta])
Gracias a la iteración fila a fila, cada transacción se calcula con su propio impuesto antes de sumarse al total. Y aquí viene lo interesante: si intentaras hacer esto con SUM tradicional, el IGV se aplicaría sobre totales agregados y distorsionaría el resultado final.
¿Qué otras funciones X existen además de SUMX?
La familia de funciones de iteración no se queda solo en sumas. Hay variantes que cubren otras necesidades analíticas comunes en Power BI:
Cada una sigue la misma lógica: recibe una tabla y una expresión, recorre cada fila, evalúa la expresión y devuelve un agregado. Esa estructura te abre la puerta a métricas mucho más sofisticadas que las que puedes lograr con funciones de agregación simple.
Si ya manejas SUM y quieres dar el siguiente paso en DAX, las funciones X son el puente hacia cálculos precisos sin inflar el modelo con columnas innecesarias. ¿Qué métrica de tu negocio te gustaría reescribir usando SUMX?
Valentina Granada Ospina
José Jesús Palacios
Jackson Fernando Chaparro Velandia
Hugo Alexis Zubia Briones
Elena Fernandez López
Pablo Alejandro Figueroa
Dylan Alejandro Osorio Cuitiva
Juan Carlos Calle
Agustin Sanchez
Julian Mancera
Juan Carlos Calle
Juan Torres
JOHN CIFUENTES
MAURICIO GIRALDO
Diego Mauricio Zuluaga Rodríguez
Sergio Andrés Lavalle Camacho
José Octavio Trejo Salazar
Juan Torres
Platzi
GEORGE DARWIN GARZON MARIN
Victor Matias Marquez
Ricardo Antonio Rivero Colmenárez
Paulo Esteban Orsini
Natacha Chiaravalloti
Erick Antonio Figueroa Gonzalez
miguel carlos medina
No tengo STOCK y tampoco tengo toda esa cantidad de modelos, es otra base de datos?
Verifica el archivo de la sección de recursos, en la clase 2:
En la tabla que se importa como Fotos_vehículos, está la columna stock.
Los iteradores en DAX son funciones que permiten realizar cálculos fila a fila en una tabla. Esto es esencial para crear métricas complejas, ya que facilitan la evaluación de expresiones sobre cada fila, retornando resultados precisos. Por ejemplo, funciones como SUMX permiten sumar valores de una columna multiplicando por otra, teniendo en cuenta el contexto de cada fila. Esto optimiza la generación de reportes en Power BI al ofrecer resultados más exactos y relevantes para el análisis de datos.
Funciones de iteración VS Columnas Calculadas:
Ambas son utiles para calcular iterativamente cada renglon de tu tabla. Cual se debe usar sobre otro dependerá de la necesidad de tu modelo.
Las columnas calculadas son almacenadas en memoria y se calcula una sola vez, por otro lado, una función de iteración es calculada cada vez que se necesita.
Si necesitas usar estos valores recurrentemente o so serán utilizados para filtros en otras medidas se debe utilizar columnas calculadas (por memoria), si solo se utiliza de vez en cuando y no debe depender su valor para filtrar algún otro cálculo se debe usar una función de iteración. Esto ayuda al performance del reporte cuando se tiene un dataset grande.
Es matemática básica pero no está mal recordarlo, así además entendemos bien cómo funciona DAX. ¿Por qué es diferente:
Esto,
PosibleVenta = SUM(Fotos_Vehiculos[Precio]) * SUM(Fotos_Vehiculos[Stock])
que esto,
PosibleVenta2 = [Precio] * [Stock]
El valor de suma total es erróneo en el primer caso por la ausencia de la propiedad distributiva de la multiplicación sobre la suma cuando se invierte el orden de las operaciones .
En definitiva, el uso de SUMX, nos permite crear una medida, sin la necesidad de hacer una nueva columna calculada, pudiendo iterar entre las filas y manteniendo una suma total final correcta.
Precio_Venta_con_IGV = SUMX( Fact_Ventas, Fact_Ventas[Precio Venta sin IGV] * (1 + Fact_Ventas[IGV]) )
Usar SUMX en lugar de SUM es fundamental cuando necesitas realizar cálculos fila a fila, ya que SUM solo puede sumar valores en una columna sin considerar el contexto de otras columnas. SUMX, por otro lado, permite iterar sobre una tabla y aplicar cálculos complejos en cada fila, lo que te da resultados más precisos, como se menciona en el transcript sobre el cálculo de ventas posibles. Esto es esencial para generar métricas más complejas y eficientes en Power BI.
Para los que no tengan stock , yo le ingrese una columna stock a la tabla Fotos vehiculos con datos inventados , y poder hacer el resto de los ejercicios del video:
Stock = IF(Fotos_Vehiculos[Modelo]="civic",3,IF(Fotos_Vehiculos[Modelo]="accord",4,IF(Fotos_Vehiculos[Modelo]="wr-v",2,IF(Fotos_Vehiculos[Modelo]="hr-v",1,IF(Fotos_Vehiculos[Modelo]="cr-v",6,IF(Fotos_Vehiculos[Modelo]="pilot",8,IF(Fotos_Vehiculos[Modelo]="ridgeline",3,IF(Fotos_Vehiculos[Modelo]="odyssey",5,0))))))))
Obviamente tengan presente que no les va a dar los mismo numeros que el video , pero el ejercicio practico es el mismo.
Buen aporte Carlos
Mi recomendación es que, como vimos en clases anteriores, para cuando tienes tantas alternativas, en vez de usar la funcion IF te convendría usar la funcion SWITCH
Saludos
El mismo problema, no recuerdo en que clase se creo la tabla la columna stock
No tengo el apartado STOCK en mi tabla
No tengo el apartado STOCK en mi tabla
Hice el calculo en excel con los mismos datos de Suma de Precio y Suma de Stock y al multiplicar cada valor de las filas de estas columnas me da igula a la Columna PosibleVenta a secas (es decir sin Número) me aclara esto porfa?
Seguro ya lo resolviste, pero dejo la respuesta con un ejemplo sencillo por si alguien nuevo tiene la misma duda
---- precio stock total
---- $ 100 x 2 = 200
---- $ 100 x 3 = 300
total: $ 200_5_500
No es lo mismo multiplicar fila por fila y después sumar los resultados (500) que multiplicar el total de precios por el total de unidades
200 X 5 = 1000
¿Cómo aplico promedios con iteraciones en DAX?
Para calcular promedios complejos que requieren evaluación por registro, la herramienta ideal es la función AVERAGEX, la cual opera bajo la misma lógica de iteración que otras funciones de su familia. Esta función primero recorre una tabla específica evaluando una expresión matemática en cada fila (como calcular un margen de ganancia o un descuento aplicado) y, al finalizar el recorrido, toma todos esos resultados individuales para extraer el promedio aritmético. En lugar de promediar totales distorsionados, esta técnica te entrega una visión estadística real y precisa basada en el comportamiento granular de tus datos comerciales diarios.
La función SUMX en DAX es una función de iteración que permite realizar cálculos sobre una tabla, evaluando una expresión para cada fila y luego sumando los resultados. Es útil para generar métricas complejas, como en el ejemplo del cálculo de ventas, donde se multiplica el precio por el stock fila por fila. Utilizar SUMX es más eficiente que trabajar con columnas calculadas, ya que optimiza el modelo de datos y mejora los análisis.
Hola comparto la formula que utilice para el precio real
Precio de venta Real = SUMX(Fact_Ventas,Fact_Ventas[Precio Venta sin IGV]*1.18)
Lo hice de esta manera ya que el IVA generalmente suele ser una constante.
Saludos
Mi medida sin funciones X me arroja un resultado correcto, que pasó?
Es posible que hayas utilizado una función implícita o una relación no funcional para obtener el resultado correcto sin usar una función explícita.
Al momento de calcular Posible Venta 2 me arroja el error: No se puede determinar un único valor para la columna 'Precio' en la tabla 'Fotos_Vehiculos'. Esto puede suceder cuando una fórmula de medida hace referencia a una columna que contiene muchos valores sin especificar una agregación como mínimo, máximo, recuento o suma para obtener un único resultado.
me pasa lo mismo
SUMX(Tabla, Columna1*Columna2) equivale a SUMAPRODUCTO(Columna1;Columna2) de Excel. Tiene similitudes a las funciones array de Google Sheets. Es maravilloso sobre todo cuando deseamos que los totales y subtotales sumen de la forma exacta, por su forma matricial.
Por eso cuando lo uso, lo suelo combinar con el SUMMARIZE de la tabla, así como FILTER y funciones de tratamiento de tabla, buscando disminuir el número de cálculos simultáneos y aumentar el rendimiento. De allí su utilidad para optimizar medidas que con el tiempo se pueden volver pesadas
Los iteradores X en DAX permiten realizar cálculos fila a fila en tablas, facilitando la creación de medidas más complejas. Por ejemplo, al usar SUMX, se puede calcular la posible venta multiplicando el precio por el stock de cada fila, en lugar de sumar totales previamente, lo que puede dar resultados incorrectos. Esto es fundamental para generar métricas precisas en Power BI. Aprender a aplicar estas funciones es clave para optimizar tus reportes y análisis de datos.
La funcion SUMX no me da igual que en el video, me arroja toda la columna 9.233.120 y luego lo que supongo que es la sumatoria de todo eso.. por que?
Posible venta3 = SUMX(Fotos_Vehiculos,Fotos_Vehiculos[Stock]*Fotos_Vehiculos[Precio])
Hola!
Está raro que salga así, permítenos ver la medida que utilizaste por favor, para ver si hay algún error.
saludos.