top of page
Foto del escritorCarlos Altamirano

Desmitificando la funciones DAX: ALL y ALLEXCEPT de Power BI | Xyclos

Actualizado: hace 5 días

Calcular porcentajes con DAX usando ALL y ALLEXCEPT en Power BI | Xyclos

¿Cómo analizar las ventas de tus productos con Power BI?


¿Estás buscando una manera efectiva de calcular el porcentaje de ventas y analizar cuáles son los productos más populares? ¡Aquí te explicamos cómo hacerlo con las funciones DAX: ALL . REMOVEFILTERS y ALLEXCEPT!.


Modelo de datos


Tenemos un Modelo de datos de ventas, que contiene las tablas: fac Ventas, dim Calendario, dim Región, dim Clientes, dim Productos, todas relacionadas.



Star schema - Modelo de datos - Power BI | Xyclos

Entonces, queremos calcular el porcentaje de ventas de los productos, para analizar los que más se venden.


Para eso, debemos:


  1. Calcular el total de ventas

  2. Calcular las ventas de cada producto

  3. Dividir el valor de ventas de cada producto para el total de ventas


Entonces vamos a usar Medidas (Measures) para hacerlo.


Función ALL


¿Qué hace la función ALL?


  • Elimina todos los filtros de una tabla completa o de una columna específica. Esto significa que los cálculos no estarán afectados por ningún filtro aplicado a la tabla o columna en cuestión.


¿Cuándo usar la función ALL?

  • Es útil cuando quieres permitir que los cálculos ignoren todos los filtros aplicados a una tabla o una columna específica.


Ya sabemos para que nos sirve ALL, ahora vamos a usarla creando Medidas.


Crear Medidas


Paso 1: Calcular el total de ventas


med Total Ventas Fijo = CALCULATE(SUM('fac Ventas'[IDMonto]), ALL('fac Ventas'))


DAX - Función ALL - Medidas Power BI | Xyclos

¿Porqué usamos la función ALL?


Porqué como vimos, la función ALL, quita todos los filtros de una tabla o columna.


En este caso, usamos ALL para "fijar, inmunizar o proteger" la tabla fac Ventas de cualquier filtro que se aplique en el Informe, ya se a través de:


  • Filtros internos: de los campos incluidos dentro del Objeto visual en el que se usa.

  • Filtros externos: de Segmentadores (Slicers), elementos de cualquier otro Objeto visual o cualquier filtro aplicado a la tabla o columna.


En definitiva, le dejamos como un valor fijo. Sin influencias de filtros de cualquier tipo.


Paso 2: Calcular ventas variables


med Total Ventas Variable = SUM('fac Ventas'[IDMonto])


En este caso no usamos CALCULATE ni ALL para dejar como variable el cálculo de la suma de las ventas, de tal forma que cuando por ejemplo creemos una tabla y arrastremos el campo IDProducto de la tabla dim Productos y la medida med Total Ventas Variable, el Lienzo (Canvas) va a calcular los valores por producto; porque estamos usando valores variables que se adaptan al entorno de filtro: IDProducto,


Paso 3: Calcular el porcentaje de ventas


med Porcentajes de ventas = DIVIDE(Medidas[med Total Ventas Variable], Medidas[med Total Ventas Fijo],0)


Con estas tres medidas creadas, ya las podemos usar en un Objeto visual.


Las medidas ventas variables y porcentaje de se van a calcular dinámicamente cuando arrastremos cualquier campo al Lienzo, excepto la medida del total de ventas, porque la hemos establecido como fija.


Antes de finalizar el análisis con ALL. Tenemos otra alternativa, la función REMOVEFILTERS.

Hace lo mismo que ALL, quitar filtros de una tabla o columna, su nombre es mas evidente de lo que hace y esta optimizada para usarse con otras funciones como CALCULATE.


med REMOVEFILTERS Total Ventas Fijo =

CALCULATE(SUM('fac Ventas'[IDMonto]), REMOVEFILTERS('fac Ventas'))


DAX: Uso de la función ALLEXCEPT - Power BI | Xyclos

Como se puede ver en los dos gráficos anteriores, los resultados generados por ALL y REMOVEFILTERS, con los mismos.


Puede usar cualquiera de las dos, ALL o REMOVEFILTERS para realizar cálculos para obtener valores fijos y usarlos en cualquier cálculo.


Función ALLEXCEPT


¿Qué hace la función ALLEXCEPT?


  • Elimina todos los filtros de una tabla excepto los de las columnas que especifiques.

  • Es útil cuando quieres permitir que se pueda filtrar por una columna específica y eliminar los demás.


Ahora veamos cuando usar la función ALLEXCEPT.


Primero, vamos a crear una tabla en el Lienzo con el IDProducto.


Luego vamos a agregar esta medida:


med Total Ventas Fija por producto Allexcept = CALCULATE(

SUM('fac Ventas'[IDMonto]), ALLEXCEPT('fac Ventas','fac Ventas'[IDProducto]))


¿Qué le estamos pidiendo a esta Medida?


Que nos calcule el total de los montos de ventas por producto y que ignore cualquier filtro excepto el de producto.


Entonces la tabla nos desplegará el total de ventas por producto.


Power BI - DAX: Uso de la función ALLEXCEPT | Xyclos

Hasta aquí, todo bien.


Y aquí viene lo interesante de esta función.


¿Qué va a pasar si a la tabla le agrego el campo IDRegion?


Que se va a mantener el valor de total de ventas por producto, porque la medida esta ignorando cualquier filtro adicional que se agregue al Objeto visual, que en este caso es IDRegión.


Power BI - DAX: Comportamiento de ALLEXCEPT en un Objeto visual | Xyclos

Entonces, cuando creamos cualquier Medida, le estamos proporcionando al Lienzo las instrucciones de comportamiento de cálculo cuando se la use en un Objeto visual.


Si usamos CALCULATE con ALLEXCEPT, podemos calcular el % de ventas por producto, independientemente de que otros campos agreguemos al Objeto visual.


Caso típico de comportamiento de cálculo del Lienzo.


Ahora veamos otro caso. Un caso típico de comportamiento del Lienzo, cuando no usamos funciones de filtrado específicas como ALL, REMOVEFILTERS o ALLEXCEPT.


Creamos otra tabla, con IDProducto y la medida: med Total Ventas Variable =

SUM('fac Ventas'[IDMonto])


Nos va a desplegar el total de ventas por producto, igual a como inicialmente nos despliega la tabla anterior.


¿Pero qué va a pasar si a esta tabla le agregamos otro campo?


Si a esta tabla le agregamos otro campo: IDRegión, el Lienzo como tiene dos campos IDProducto y IDRegión, va a calcular el monto de ventas por IDProducto y por IDRegión.


Power BI - DAX: Función SUM sin Filtros | Xyclos

Un resultado diferente al no aplicar ALLEXCEPT.


Comparativa entre ALL, REMOVEFILTERS y ALLEXCEPT

Función

¿Qué hace?

¿Cuándo usarla?

ALL

Elimina todos los filtros.

Para totales globales fijos.

REMOVEFILTERS

Similar a ALL. Elimina todos los filtros.

Más intuitiva y útil para usar con CALCULATE.

ALLEXCEPT

Elimina filtros excepto uno.

Para totales específicos, ignorando otros filtros.

Conclusión del uso de funciones de filtrado en Power BI


El lienzo de Power BI está diseñado para crear tablas dinámicas, tablas de resumen y gráficos interactivos.


Los 'filtros' actúan como instrucciones que definen cómo el Lienzo debe comportarse y realizar los cálculos de agregación o sumarización según el contexto del Objeto visual, permitiéndonos:

  • Controlar el contexto del cálculo

  • Seleccionar subconjuntos específicos de datos

  • Personalizar el Objeto visual o visualización según las necesidades del usuario


En definitiva, todo va a depender de cual es nuestra necesidad de análisis.


Siguiente paso en su desarrollo como Analista de datos


¡Lleva tus análisis al siguiente nivel con Power BI!


Empieza a usar funciones como ALL y ALLEXCEPT para obtener insights más precisos.


No dejes pasar esta oportunidad de potenciar tu estrategia de datos, ¿no cree que es el momento ideal para actuar?


Tomando estos dos cursos estarás preparado para dominar Power BI:









7 visualizaciones0 comentarios

Entradas relacionadas

Ver todo

Comments


bottom of page