¿Por qué y cuando utilizar SUMX en lugar de SUM?

¿Cual es la diferencia entre las funciones DAX SUM y SUMX? Ha llegado el momento de averiguar por qué en tu suma tan sencilla tienes un texto gris con subrayado rojo...

sum sumx dax tutorial power bi columna español card informe expresión función formula diferencia

SUM y SUMX son unas de las funcionas de DAX más utilizadas, pero la diferencia entre las dos puede ser confusa. En este artículo veremos las especificidades de cada una y ejemplos prácticos. ​

Compartir el artículo

Share on facebook
Share on twitter
Share on linkedin

La función SUM agrega (verticalmente) valores de una columna

 

Teoría de SUM:

SUM es una función simple que suma todos los números de una columna y según la documentación de Microsoft tiene esta sintaxis:

SUM( < column > )

Recordatorio: Aunque en DAX se puede escribir el nombre de una columna sin especificar a que tabla pertenece, se recomienda escribir también el nombre de la tabla antes el nombre de la columna, de esta forma: Tabla[Columna]

Es muy importante entender la sintaxis de cada función, especialmente cuando trabajamos con funciones más complejas como SUMX. Aquí significa que SUM toma como argumento una columna. Cuando la sintaxis no tiene un argumento que pide en que tabla hacemos el cálculo, es porque una columna solo puede pertenecer a una tabla.

Práctica de SUM:

Supongamos que tenemos una tienda que vende productos de tenis. En la tabla siguiente hay la información correspondiente a estos productos y con una columna Importe que nos indica el volumen de negocio por producto :

modelo de datos tenis sum sumx dax power bi

Necesitamos calcular el importe total de las ventas. Vamos a crear una medida y calcular el importe en DAX. En nuestro caso, como ya tenemos una columna “Importe” que nos calcula el importe por cada fila, podemos utilizar directamente la función SUM:

sum sumx dax tutorial power bi columna español card informe expresión función formula diferencia

Lo que hemos puesto en el único argumento es la columna Importe. La medida nos devuelve la suma de los importes. Lo ha calculado de manera vertical:
899.99
+ 299.98
+ 639.96
+ 174.99
+ 449.97

Ahora supongamos que no tenemos la columna Importe en el modelo de datos, sino que tenemos las columnas Cantidad y Precio unitario :

sum sumx dax tutorial power bi columna español tabla informe expresión función formula diferencia

y que queremos crear una medida que lo calcule. Si te estás preguntando porque creamos una medida y no una columna calculada, te invito a leer este artículo sobre la diferencia entre las medidas y las columnas calculadas.

El primer reflejo que vamos a tener es calcular eso : Cantidad * Precio unitario con la función SUM. Vemos lo que pasa:

sum sumx dax tutorial power bi columna español card informe expresión función formula diferencia mensaje error

No funciona, la función SUM solo puede recibir una columna. Mientras que aquí lo hemos dado una expresión. De todas formas, cuando ves una palabra en gris es que el DAX intellisense te está diciendo que algo no está en su sitio. DAX intellisense siempre tiene razón y te ayuda a entender la estructura de la expresión o de la función que está mal.

Para abordar esta situación, tenemos la función DAX SUMX.

SUMX suma una expresión DAX

Teoría de SUMX:

La función SUMX es un iterador, es decir que va a recorrer toda la tabla, fila por fila : calcula una expresión por cada fila de una tabla especificada, memoriza temporalmente el resultado de cada fila, agrega todos estos resultados, libera la memoria temporal y devuelve el resultado (la suma de las expresiones). ¡Vaya maratón!

La sintaxis de SUMX es : SUMX( tabla , <expresión>)

En DAX, el X de SUMX es por eXpression. Lo encontramos en otras funciones iteradores como AVERAGEX, CONCATENATEX, etc.

Práctica de SUMX:

En el caso de no tener una columna Importe en el modelo, la solución sería crear esta medida con SUMX :

sum sumx dax argumento tabla y expresión

Va a recorrer toda la tabla “Ventas tenis”, hacer la multiplicación en la primera fila, guardarla, añadirla a la suma de la segunda fila, etc.

sum sumx dax tutorial power bi columna español card informe expresión función formula diferencia

Y nos va a devolver la suma total :
sum sumx dax tutorial power bi card informe expresión función formula diferencia

LO BUENO DE SUMX en DAX

Teoría – ventaja de SUMX en DAX:

El primer argumento puede recibir cualquier tabla. Es decir que podemos darle cualquier función que devuelva una tabla. Eso nos va a permitir hacer cálculos más interesantes porque podremos controlar el contexto de filtros.

Práctica – ventaja de SUMX en DAX:

Cuando ponemos la Marca y el Importe (calculado con SUMX) en una tabla obtenemos eso :

sum sumx dax contexto de filtro en tabla

Vemos que, porque existe un contexto de filtro, el resultado de Importe_medida_SUMX está filtrado por cada marca, lo que es normal. Pero podríamos ignorar este filtro de Marca utilizando la función ALL en el primer argumento de la función SUMX. En efecto, ALL devuelve una tabla con todas sus filas e ignora el contexto de filtros.

La fórmula siguiente nos devuelve en cada fila el mismo resultado:

SUMX DAX ALL power bi sum turorial contextos

¿Por qué es útil hacer eso? Porque de esta manera, vamos a poder calcular el porcentaje de ventas de cada marca (es decir cual participa más en el importe total):

sum sumx dax función DIVIDE para calcular porcentajes

Vemos que vendemos un 35% de raquetas Babolat mientras que las raquetas de Yonex solo se venden en un 6.82% del total.

También hubieramos podido utilizar la función FILTER en el primer argumento de la función SUMX. Supongamos que tengo que entregar un reporte a la marca Tecnifibre. Puedo calcular sus ventas filtrando con su marca, de esta manera:

sum sumx dax filtrar tabla con función FILTER ejemplo

 


CONCLUSIÓN – SUM o SUMX en DAX, ¡depende!

Si lo que tienes que sumar se encuentra en una sola columna, SUM es tu amigo porque hace la suma de los valores que hay en una sola columna, es un cálculo vertical.

Si tienes que hacer una suma que requiere 2 o más columnas, SUMX te va a salvar la vida porque SUMX suma una expresión. Recorre la tabla de manera horizontal, fila por fila. A nivel de performance, SUMX es más costoso porque utiliza una memoria temporal mientras hace su trabajo.

Cualquier duda que tengas puedes dejar un comentario abajo. ¿Ya utilizas SUMX? ¿Con que formulas lo combinas? Comparte con nosotros el uso de las funciones DAX SUM o SUMX que te sirve en tus informes.

Domina Microsoft Power BI

Súmate al Club BI.P

1 comentario

Ana Maria Bisbe York · junio 23, 2020 a las 5 h 50 min

Excelente artículo, Dhania.
Muy bien explicado, enhorabuena y muchas gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Más artículos

Súmate
al Club BI.P

Tutoriales exclusivos de Power BI.

Trucos & Consejos. 


Webinars : Analizo en directo las novedades mensuales de Power BI.


SOLO PARA LOS MIEMBROS