SUMX en DAX: cuándo usar un iterador

SUMX es un iterador DAX: recorre las filas de una tabla, evalúa una expresión para cada una y suma los resultados. Se diferencia de SUM, que agrega directamente una columna existente.
Sintaxis y primer ejemplo
SUMX(<tabla>, <expresión>)
Si Ventas tiene cantidad y precio:
Importe Ventas =
SUMX(
Ventas,
Ventas[Cantidad] * Ventas[PrecioUnitario]
)
Para cada fila, multiplica cantidad por precio. Después suma todos los importes visibles en el contexto actual. No es necesario crear una columna calculada intermedia.
SUM frente a SUMX
Total Coste = SUM(Ventas[Coste])
Usa SUM si el valor ya está en una columna y solo necesitas agregarlo. Usa SUMX cuando el valor debe calcularse por fila o cuando la primera expresión devuelve una tabla filtrada.
Un error común es escribir:
SUM(Ventas[Cantidad] * Ventas[PrecioUnitario])
SUM espera una referencia de columna, no una expresión fila a fila.
Contexto de fila y contexto de filtro
SUMX crea contexto de fila: durante cada iteración conoce la fila actual de Ventas. Al mismo tiempo, la tabla ya está limitada por filtros de fecha, producto o cliente provenientes del informe.
Si una matriz muestra 2026, SUMX solo recorre ventas de 2026. Las relaciones en Power BI determinan cómo llegan esos filtros.
SUMX sobre una tabla filtrada
Importe Premium =
SUMX(
FILTER(
Ventas,
Ventas[Descuento] < 0.10
),
Ventas[Cantidad] * Ventas[PrecioUnitario]
)
FILTER construye la tabla que recorrerá SUMX. Si el criterio puede aplicarse a una dimensión con CALCULATE, esa alternativa suele expresar mejor la intención:
Importe Premium =
CALCULATE(
[Importe Ventas],
Productos[Segmento] = "Premium"
)
La guía de CALCULATE explica cómo se modifica el contexto.
Totales que parecen incorrectos
Supón un precio unitario promedio distinto por producto. Una medida:
Ingreso Estimado =
SUMX(
VALUES(Productos[ProductoId]),
[Unidades] * [Precio Medio]
)
En el total, la expresión se evalúa producto por producto. Si escribieras [Unidades] * [Precio Medio], multiplicarías los valores agregados del total, que puede producir una cifra diferente.
Los totales DAX no suman automáticamente las filas visuales: recalculan la medida en el contexto del total. Iterar sobre la granularidad correcta convierte esa diferencia en una decisión explícita.
Variables para mejorar la lectura
Margen =
SUMX(
Ventas,
VAR Ingreso = Ventas[Cantidad] * Ventas[PrecioUnitario]
VAR Coste = Ventas[Cantidad] * Ventas[CosteUnitario]
RETURN
Ingreso - Coste
)
Las variables documentan el cálculo y evitan repetir expresiones. Sus valores se evalúan dentro del contexto correspondiente.
Rendimiento
SUMX no es “lento” por definición, pero recorrer una tabla de hechos enorme con una expresión compleja puede ser costoso. Para optimizar:
- Itera sobre la tabla más pequeña que represente la granularidad.
- Prefiere agregaciones nativas cuando ya existe una columna.
- Evita materializar
FILTER(Ventas,...)si un filtro de dimensión basta. - Elimina columnas innecesarias del modelo.
- Mide con herramientas de rendimiento antes de reescribir.
No conviertas cada medida en una columna calculada para “acelerar”: aumenta memoria y puede cambiar la semántica frente a filtros.
Validar una medida SUMX
Prueba la medida primero con una muestra pequeña cuyo resultado puedas calcular manualmente. Después compárala por día, producto o transacción y revisa por separado el total general. Esta secuencia ayuda a distinguir un error de expresión de un problema de granularidad.
Incluye casos con valores en blanco, cantidades negativas, devoluciones y precios cero si forman parte del negocio. Una fórmula técnicamente válida puede seguir siendo incorrecta si no representa esas reglas. Documenta dentro del modelo qué tabla itera, qué filtros espera y por qué se eligió esa granularidad.
Casos habituales
- Cantidad por precio.
- Margen por transacción.
- Promedios ponderados.
- Totales de productos de medidas.
- Sumas sobre escenarios virtuales.
- Cálculos que requieren una expresión distinta en cada fila.
En un modelo bien diseñado, las medidas se apoyan en un esquema de relaciones claro y una tabla calendario común. SUMX debe representar la granularidad real del negocio, no reparar un modelo ambiguo.
Fuentes oficiales
Preguntas frecuentes
¿Qué diferencia hay entre SUM y SUMX?
SUM agrega una columna; SUMX recorre una tabla, evalúa una expresión por fila y suma esos resultados.
¿SUMX crea una columna calculada?
No. Dentro de una medida calcula resultados virtuales durante la consulta y devuelve su suma.
¿Por qué cambia el total de SUMX?
La medida se evalúa en el contexto del total. Si iteras por una granularidad concreta, el total refleja esa lógica y no una suma visual automática.
¿Se puede usar FILTER dentro de SUMX?
Sí. FILTER define la tabla que se recorrerá, aunque un filtro directo con CALCULATE puede ser más claro y eficiente en muchos casos.
¿SUMX ignora valores en blanco?
Al sumar, los valores no numéricos y blancos no aportan al total. La expresión puede requerir control adicional según la regla de negocio.
¿Cuándo evitar SUMX?
Cuando solo necesitas sumar una columna existente o cuando una agregación nativa expresa el cálculo sin iterar fila por fila.

Deja una respuesta