Función SUM() vs SUMX()

Partners oficiales

El lenguaje DAX nos ofrece dos funciones para realizar el cálculo de una suma: SUM() y SUMX() y debemos conocer en qué casos usar una u otra. Analizaremos tres posibles casos de uso para determinar en cada uno cuál es la más conveniente, esta función es compatible con Microsoft Power BI.

Para ello partiremos del siguiente modelo de datos:

Caso de uso 1

Supongamos que necesitamos calcular la suma del importe de todos los productos. ¿Qué función debemos utilizar? ¿Podemos usar indistintamente una u otra?

Lo primero es conocer cada una de las funciones.

Función SUM()

Agrega todos los números en una columna.
Sintaxis: SUM()

El parámetro es la columna que contiene los números a sumar. La función acepta valores numéricos o de fecha y devuelve como resultado un valor decimal. Las filas pueden contener valores en blanco. Los valores de la columna no se pueden filtrar.

Suma de Importe := SUM([Importe])

Función SUMX()

Devuelve la suma de una expresión evaluada por cada fila de una tabla.
Sintaxis:SUMX()
El parámetro es la tabla que contiene los valores para los cuales se evaluará la expresión. Puede ser el nombre de una tabla o una expresión que devuelve una tabla.El parámetro es una columna que contiene los números que desea sumar o una expresión que se evalúa como una columna.Solo se cuentan los números de la columna. Se omiten los espacios en blanco, los valores lógicos y el texto.

Suma de Importe 1 := SUMX(Tabla1; [Importe])Nueva llamada a la acción

Podemos observar que las dos funciones devuelven el mismo resultado.Lo que diferencia a ambas funciones es la forma en que realizan el calculo:La función SUMX es un iterador, recorrerá cada fila evaluando una expresión mientras que la función SUM() sumará directamente los valores de la columna.Para este caso la función SUM() es la recomendada.

Caso de uso 2

Calcular la suma del Importe del modelo anterior solo para la categoría Frutas.

Función SUM()

La función SUM() no nos permite filtrar las filas de la tabla sobre la que queremos realizar el cálculo y debemos combinarla con la función CALCULATE(). Importe de frutas := CALCULATE(SUM([Importe]) ; Filter(Tabla1;[Categoría]=”Frutas”))

Función SUMX()

En cambio, la función SUMX () sí que nos lo permite:

Importe frutas := SUMX(Filter(Tabla1; [Categoría]=”Frutas”); [Importe])En este caso pudiera usarse cualquiera de las dos, si se aplica de la manera mencionada.

Caso de uso 3

Calcular las ventas totales. En este modelo, a diferencia del anterior, no tenemos una columna con el importe de cada fila, pero podemos calcularlo usando las columnas Precio venta y Cantidad en la expresión:[Precio venta]*[Cantidad].

Función SUM()

Sintaxis: SUM([Precio venta]*[Cantidad])

La función SUM() nos devuelve un error porque solo admite como parámetro una columna.

Función SUMX()

En cambio, la función SUMX () sí que nos lo permite porque admite una expresión además de una columna:
Sintaxis: SUMX(Tabla2;[Precio venta]*[Cantidad])En este caso la función SUMX() es la recomendada.

Compartir esta publicación
Recursos

Recursos a tu alcance

Descubre entre nuestra biblioteca de recursos una amplia gama de
medios para potenciar tus conocimientos.
Suscríbete a la
Newsletter

Únete al club de los que mejoran cada día

Últimos artículos