🟢 Introducción

Mientras que muchas funciones DAX trabajan sobre columnas completas, la función SUMX() permite iterar sobre cada fila de una tabla o filtro y realizar un cálculo personalizado. Esto abre posibilidades de análisis mucho más finos como calcular margen, coste por unidad o ajustar valores según condiciones dinámicas.

🧠 Qué es / para qué sirve

SUMX() evalúa una expresión para cada fila de una tabla especificada y luego suma los resultados. Sirve cuando necesitas hacer un cálculo por fila (o por registro) y luego agregar esos resultados. Algunos casos: Margen = SUMX(Ventas, Ventas[Precio] – Ventas[Coste]) Coste por cliente = SUMX(FILTER(Ventas, Ventas[ClienteID]=X), Ventas[Coste]) Ajuste dinámico: aplicar descuentos en ciertas filas, luego sumar. En resumen: SUMX() convierte la agregación en una iteración + suma, lo que te da mayor flexibilidad.

🧩 Sintaxis

SUMX(
    <table>,
    <expression>
)

La tabla de datos sobre la que iteras (puede venir filtrada).

El cálculo que se evalúa en cada fila de la tabla.

Ejemplo básico:

SUMX(
    Products,
    Products[Price] * Products[Quantity]
)

💻 Ejemplos con código

🔹 Ejemplo 1 — Calcular ingresos totales por fila

TotalIngresos = 
SUMX(
    Sales,
    Sales[VentaUnitaria] * Sales[Cantidad]
)

🔹 Ejemplo 2 — Calcular margen total

MargenTotal = 
SUMX(
    Sales,
    (Sales[VentaUnitaria] - Sales[CosteUnitaria]) * Sales[Cantidad]
)

🔹 Ejemplo 3 — Combinar con FILTER

VentasPremium =
SUMX(
    FILTER(Sales, Sales[Segmento] = "Premium"),
    Sales[VentaUnitaria] * Sales[Cantidad]
)

🔹 Ejemplo 4 — Usar SUMX y ALL para ignorar contexto

TotalGeneral =
SUMX(
    ALL(Sales),
    Sales[VentaUnitaria] * Sales[Cantidad]
)

🧱 Buenas prácticas

✅ Prefiere usar SUMX() cuando la lógica de cálculo varía por fila.

✅ Si solo necesitas SUM() simple de una columna, usa SUM() para mejor rendimiento.

✅ Para tablas muy grandes, filtra antes de usar SUMX() para optimizar.

✅ Documenta qué cálculo se realiza en cada iteración.

✅ Evita anidar demasiados iteradores (SUMX(FILTER(SUMX(…)))) pues puede afectar al rendimiento.

⚠️ Errores comunes

🚫 Usar SUMX() sin filtrar cuando la tabla es muy grande → puede generar lentitud.

🚫 Confundir SUMX() con SUM() y esperar que simplemente sume una columna.

🚫 No validar que la expresión de fila retorna un número o tipo compatible.

🚫 Mezclar iteradores cuando un contexto de filtro más simple bastaría.

🚫 Ignorar que SUMX() respeta contexto de fila pero puede ser influenciada por filtros externos.

🔄 Variantes o alternativas

AVERAGEX(): calcula promedio por fila antes de agregar. COUNTX(): cuenta filas que cumplen condición. MINX() / MAXX(): busca mínimos/máximos en una iteración. SUM(): cuando no necesitas lógica por fila. CALCULATE(SUMX(…)): combina contexto modificado con iteración.

📚 Recursos oficiales

SUMX function – Microsoft Learn

🧩 Mini práctica

Objetivo: Calcular el coste total ajustado con descuentos por producto.

En Power BI, crea medida CosteTotal con:

CosteTotal =
SUMX(
  Sales,
  Sales[CosteUnitaria] * Sales[Cantidad]
)

Crea medida CosteConDescuento con:

CosteConDescuento =
SUMX(
  Sales,
  Sales[Cantidad] * (Sales[CosteUnitaria] * (1 - Sales[Descuento]))
)

Añade ambas a tarjeta visual y filtra por segmento “Premium” y “Estándar”. Comprueba diferencias e identifica el impacto del descuento.

Avatar de Eduardo Pastor

Published by

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo