¿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 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
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 :
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:
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 :
El primer reflejo que vamos a tener es calcular eso : Cantidad * Precio unitario con la función SUM. Vemos lo que pasa:
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 :
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.
Y nos va a devolver la suma total :
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 :
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:
¿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):
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:
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.
Descubre nuestra formación dedicada al lenguaje DAX en Power BI
Curso inicial de DAX que estructura y completa tus conocimientos del lenguaje DAX en Power BI.
Los Power BI Calculation Group son una funcionalidad tan potente como desconocida. En este artículo repasamos qué son, cómo crearlos y cómo usarlos para hacer cosas de forma más eficiente o hacer cosas que no se pueden hacer de otra forma.
Este tutorial de BIIST Pro muestra el procedimiento paso a paso para descargar e instalar Microsoft Power BI Desktop desde Microsoft Store y desde el Centro de descarga de Microsoft. También veremos las diferencias fundamentales entre estas dos formas de instalar la herramienta.
3 comentarios
Ana Maria Bisbe York · junio 23, 2020 a las 5 h 50 min
Excelente artículo, Dhania.
Muy bien explicado, enhorabuena y muchas gracias.
S I L V I A · mayo 11, 2023 a las 4 h 06 min
Muchas gracias excelente explicación, encantada de suscribirme a tu Blog
Crear una Tabla Calendario en Power BI | Biist Pro · octubre 17, 2020 a las 0 h 02 min
[…] Este artículo te puede interesar : ¿Por qué y cuando utilizar SUMX? […]