Funciones de dominio SUMX, MAXX, etc… - Galaz666/Power-Bi GitHub Wiki

Hay un grupo de funciones que son similares a las básicas pero mucho más potentes.

Por ejemplo a la función SUM hay una correspondiente SUMX

SUM, solo se puede aplicar sobre un campo o columna: no sobre una medida.

SUMX tiene dos parámetros:

  • La tabla sobre la que se aplica, que puede ser incluso un subconjunto de una tabla, como veremos
  • Y la expresión a calcular, donde podemos usar cualquier operación matemática valida

Supongamos que en nuestra tabla de datos, no nos dieran el Neto, sino el precio de venta de cada línea.

Para calcular el Neto, deberíamos multiplicar el Precio * Unidades, y así tendríamos una nueva columna con el Neto.

Pero esto implica añadir una nueva columna, que se calcula sobre todas las filas de la tabla. Y si la tabla es muy grande…pues será muy lento.

Para ello sería mejor crear una medida que calculara la Suma de Precio * Unidades: eso es lo que hace SUMX

Dado que en nuestra tabla NO tenemos el precio, vamos a añadir una nueva columna que lo calcule, como NETO / UNIDADES.

Esto es una división, y que pasaría si UNIDADES es 0, nos daría un error. Así que usaremos la función DIVIDE que permite solucionar esto.

NOTA: en este ejercicio hacemos esto para poder tener el precio y luego calcular el neto. Aunque en realidad no nos hace falta dado que el Neto ya existe.

Creemos una nueva columna y ponemos

Precio = DIVIDE(‘Facturas ventas'[Neto];’Facturas ventas'[Unidades];0) En la lista de campos aparece el Precio

Para calcular el importe, creamos una nueva medida y ponemos

Importe sumado = SUMX(‘Facturas ventas’;’Facturas ventas'[Precio]*’Facturas ventas'[Unidades])

En una nueva página, creamos una tabla y ponemos: Representante, Neto, Importe e Importe sumado

Las tres columnas tienen que dar los mismos valores pero los usaremos de modo distinto.

Como decíamos, las funciones X permiten indicar una tabla o un subconjunto de la misma.

Supongamos que queremos tener el Importe de las ventas del 2013 para poder compararlo con los otros años, o sea ventas 2014/ventas 2013, ventas 2015/ventas2013

Creemos una nueva medida y ponemos

Importe 2013 = sumx(FILTER(‘Facturas ventas’;’Facturas ventas'[Ejercicio]=2013);’Facturas ventas'[Neto])

Donde el primer parámetro es un subconjunto de la tabla Facturas ventas usando la función FILTER

Filtramos la tabla Facturas ventas por el Ejercicio 2013

Si ponemos este Importe 2013 en la tabla tenemos