Desmitificando la funciones DAX: ALL y ALLEXCEPT de Power BI | Xyclos
Actualizado: hace 5 días
¿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.
Entonces, queremos calcular el porcentaje de ventas de los productos, para analizar los que más se venden.
Para eso, debemos:
Calcular el total de ventas
Calcular las ventas de cada producto
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'))
¿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'))
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.
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.
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.
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:
#PowerBI #DAX #FuncionesDAX #AnálisisDeDatos #VisualizaciónDeDatos #PowerBI #DAXFunctions #DataAnalysis #DataVisualization #AnalyticsTools #Xyclos
Comments