En el lenguaje DAX, ambas funciones se utilizan para obtener totales, pero operan bajo conceptos de ejecución distintos: Agregación Directa frente a Iteración.

1. Función SUM (Agregadora)

La función SUM es la forma más sencilla de sumar valores. Pertenece al motor de agregación de DAX.

Características principales:

  • Ámbito: Solo puede operar sobre una única columna.
  • Contexto: Solo reconoce el Contexto de Filtro (lo que el usuario selecciona en segmentadores o visuales).
  • Simplicidad: Es más rápida de escribir y fácil de entender.

Sintaxis:

Medida_Suma = SUM(Tabla[Columna])

Ejemplo:

Si quieres el total de unidades vendidas:

Total Unidades = SUM('Ventas'[Cantidad])

2. Función SUMX (Iteradora)

La función SUMX es una función «X» o iteradora. Permite realizar cálculos complejos fila por fila antes de sumar los resultados.

Características principales:

  • Ámbito: Puede operar sobre una tabla (o una tabla filtrada) y una expresión aritmética.
  • Contexto: Crea un Contexto de Fila para evaluar la expresión en cada registro individual.
  • Versatilidad: Permite multiplicar columnas, aplicar lógica condicional o navegar relaciones con RELATED.

Sintaxis:

Medida_Iterada = SUMX(Tabla, Expresion)

Ejemplo:

Si necesitas calcular los ingresos totales multiplicando el precio por la cantidad de cada fila:

Total Ingresos = SUMX('Ventas', 'Ventas'[Cantidad] * 'Ventas'[PrecioUnitario])

3. Cuadro Comparativo

CaracterísticaSUMSUMX
Tipo de funciónAgregación (Aggregator)Iteración (Iterator)
Argumentos1 (Solo una columna)2 (Tabla y Expresión)
Contexto de FilaNo tieneSí, itera fila por fila
Cálculos complejosNo permite (ej. mult. columnas)Sí (ej. [Col A] * [Col B])
Uso de MemoriaMuy bajo y optimizadoPuede ser alto en tablas gigantes
NavegaciónNo puede usar RELATED directamentePuede usar RELATED en su expresión

4. ¿Cuándo usar cada una?

Usa SUM cuando:

  • Solo necesites sumar los valores de una columna que ya existe físicamente en tu modelo.
  • El rendimiento sea crítico y la columna ya contenga el dato final (ej. una columna calculada de «Venta Total»).

Usa SUMX cuando:

  • Necesites realizar una operación aritmética entre dos o más columnas de la misma tabla (evitando crear columnas calculadas innecesarias que pesan en el modelo).
  • Necesites sumar datos de una tabla relacionada (ej. SUMX(Ventas, Ventas[Cantidad] * RELATED(Producto[Precio]))).
  • Quieras aplicar filtros dinámicos dentro de la medida usando FILTER en el primer argumento.

5. El mito del rendimiento: «Syntactic Sugar»

Es importante saber que, internamente, el motor de DAX traduce un SUM(Tabla[Columna]) como: SUMX(Tabla, Tabla[Columna]).

Por lo tanto, para sumas de una sola columna, el rendimiento es idéntico. La diferencia real radica en la capacidad de SUMX para manejar expresiones de varias columnas y lógica de iteración.

6. Ejemplo Práctico: Error Común

Un error frecuente es intentar sumar una multiplicación de columnas con SUM:

Incorrecto (Error de sintaxis): Venta = SUM(Ventas[Cantidad] * Ventas[Precio]) -> SUM solo acepta una columna.

Correcto: Venta = SUMX(Ventas, Ventas[Cantidad] * Ventas[Precio])