En el siguiente artículo vamos a enseñaros cuál es la diferencia entre las funciones SUM y SUMX utilizando DAX.

Video

Paso a paso…

Lo primero presentamos nuestra tabla, es una tabla llamada bd_Ventas, que tiene Fecha_Venta, Ciudad Cliente, País, Vendedor, Canal de Venta, Precio sin Iva, Iva. Vamos a jugar posteriormente con el Canal de Venta, Precio sin Iva e Iva.

Tabla Power BI para ejemplo de la función SUM

Caso 1 – Obtención de la suma del precio sin IVA

Con la función SUM

Lo primero que vamos a calcular es la suma de lo vendido antes de Iva de toda la base. Para eso podemos emplear la función SUM, que lo que va a hacer es calcular la suma de todos los números de una columna.

Vamos a crear una nueva medida en esta tabla. Llamamos a la medida Caso 1.1 y al emplear la función SUM nos aparece al abrir paréntesis justo lo que hace dicha función, suma todos los números de una columna. Si lo que queremos es sumar lo vendido antes de Iva, usaremos…

Caso 1.1 = SUM(bd_Ventas[Precio sin Iva])

Obtención de una suma con la función SUM

Con la función SUMX

Si hacemos lo mismo usando SUMX, podemos establecer una nueva medida que vamos a llamar Caso 1.2, aplicamos SUMX y al abrir paréntesis nos encontramos que hace justo la devolución de la suma de una expresión evaluada para cada fila de una tabla. Nos pide la tabla y aludimos a nuestra tabla bd_Ventas y como expresión le pasamos bd_Ventas[Precio sin Iva], es decir,…

Caso 1.2 = SUMX(bd_Ventas, bd_Ventas[Precio sin Iva])

Obtención de una suma con la función SUMX

Comprobación del resultado

Para comprobar que es correcto vamos a la Vista de informe, creamos una visualización de una tarjeta de varias filas y movemos la medida creada con la función SUM y la medida creada con SUMX. Podemos aplicar algún formato de zoom para que se vea un poco más claro. Vemos que coinciden ambas medidas.

Resultado comparado función SUM y función SUMX

Caso 2 – Obtención de la suma del precio sin IVA solo para un canal de venta

En un segundo caso, volviendo a nuestra vista de datos vamos a intentar conseguir la suma del total antes de Iva, pero solo para el Canal de Venta “Plan Referidos”, uno de los canales de venta. Eso significará que tenemos que hacer un filtro.

Con la función SUM

Vamos a aplicarlo con la función SUM creando una medida. Nos situamos en la tabla de bd_Ventas, creamos una nueva medida llamada Caso 2.1 que será igual a la función SUM, pero aquí nos encontramos con que para hacer un filtro, no podemos hacer filtros directamente con la función SUM, tenemos que anteponer la función CALCULATE, que vale para evaluar una expresión en un contexto modificado por filtros. Como primer argumento del CALCULATE le pasamos la función SUM y como segundo argumento utilizamos la función FILTER para pasarle el filtro deseado, que se corresponda con el canal de ventas “Plan Referidos”. Finalmente quedaría…

Caso 2.1 = CALCULATE(SUM(bd_Ventas[Precio sin Iva]), FILTER(bd_Ventas, [Canal de Venta] = “Plan Referidos”))

Función SUM para un canal de venta

Con la función SUMX

Igualmente, si lo queremos hacer con la función SUMX, ya no necesitamos realizar la operación con CALCULATE, pero sí que deberemos indicarle como tabla la función FILTER para obtener únicamente el canal de venta “Plan Referidos” y como expresión pondremos el Precio sin IVA. Quedaría así…

Caso 2.2 = SUMX(FILTER(bd_Ventas, [Canal de Venta] = «Plan Referidos»), bd_Ventas[Precio sin Iva])

Función SUMX para un canal de venta

Comprobación del resultado

Si volvemos a la vista del informe y creamos en el panel una tarjeta de varias filas, podemos mover la medida realizada con SUM y la realizada con SUMX y vemos que los cálculos operacionales son exactamente iguales.

Aplicamos un poco de formateo de texto con zoom para ambas medidas.

Resultado comparado en un canal de venta

Caso 3 – Obtención del precio con IVA fila a fila

Y aquí es dónde viene realmente la diferencia, en el caso 3. Vamos a imaginar que nos piden el total facturado, la suma de los campos Antes de IVA y de IVA, es decir, queremos hacer una suma para que nos ofrezca el precio con IVA, registro por registro, iterando fila por fila. Las funciones que terminan en “X” son iteradoras, van a conseguir iterar fila por fila.

NO SE PUEDE CALCULAR Con la función SUM

Si intentáramos conseguir el precio con IVA, para cada fila, con la función SUM veríamos que no es posible ya que a la función SUM solo se le puede pasar una columna de una tabla y necesitaríamos pasarle las dos columnas que deseamos sumar. Podríamos forzar la situación he intentar poner…

Caso 3.1 = SUM(bd_Ventas, bd_Ventas[Precio sin Iva] + bd_Ventas[Iva])

Pero enseguida veríamos que se está produciendo un error y nos diría que la función SUM solo acepta una referencia de columna como argumento y no dos.

Calcular fila a fila con la función SUM

Con la función SUMX

Luego esto no se puede hacer de esta manera. Lo que tenemos que hacer es usar la función SUMX sobre la tabla bd_Ventas y poniendo como expresión la suma de las dos columnas, que sí que está permitido, quedando la medida…

Caso 3.1 = SUMX(bd_Ventas, bd_Ventas[Precio sin Iva] + bd_Ventas[Iva])

Calcular fila a fila con la función SUMX

Comprobación del resultado

Yendo a la vista de informe podemos generar una tarjeta y llevarnos la medida arrastrándola a esa tarjeta.

Resultado sumar fila a fila

Si rápidamente selecciono el Excel y hago la operación podemos ver que aplicando una suma a toda la columna de Precio sin Iva y luego posteriormente a la columna de [Iva], cerramos el paréntesis y aplicamos Enter, aquí lo estamos haciendo en Excel para contrastar el resultado, vemos que el resultado es el mismo que usando la función SUMX con DAX.

Comprobar resultado SUMX en Excel

Conclusiones

En definitiva, SUMX vale para iterar fila por fila, pudiendo trabajar con varias columnas, cosa que no está permitida utilizando la función SUM.

Esto ha sido una breve explicación entre las diferencias que hay entre la función SUM y SUMX utilizando DAX.

Otros vídeo tutoriales de Power BI

Share This


    *Sólo números de España

    Información sobre protección de datos
    He leído y acepto la Política de privacidad

    Responsable de los datos: Dapen Centro Estudios S.L.
    Finalidad: Responder a solicitudes del formulario y envío de actualizaciones y cursos.
    Legitimación: Tu consentimiento expreso.
    Destinatario: Dapen Centro Estudios S.L. No se cederán datos a terceros, salvo obligación legal.
    Derechos: Acceso, rectificación, supresión, anonimato, portabilidad y olvido de sus datos.

    Te llamamos Te llamamos
    Enviar mensaje de Whatsapp Whatsapp