ALL
Se aplica a:Columna calculadaTabla calculadaMedidaCálculo visual
Devuelve todas las filas de una tabla, o todos los valores de una columna, omitiendo los filtros que se puedan haber aplicado. Esta función es útil para borrar filtros y crear cálculos en todas las filas de una tabla.
Sintaxis
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
Parámetros
Término | Definición |
---|---|
tabla | Tabla en la que se van a borrar los filtros. |
columna | Columna en la que se van a borrar los filtros. |
El argumento de la función ALL debe ser una referencia a una tabla base o a una columna base. No se pueden usar expresiones de tabla ni de columna con la función ALL.
Valor devuelto
Tabla o columna con filtros quitados.
Notas
Esta función no se usa por sí sola, sino que sirve como función intermedia que se puede usar para cambiar el conjunto de resultados en el que se realiza otro cálculo.
El comportamiento normal de las expresiones DAX que contienen la función ALL() es omitir cualquier filtro que se haya aplicado. Sin embargo, hay algunas situaciones en las que este no es el caso debido a auto-exist, una tecnología de DAX que optimiza el filtrado para reducir la cantidad de procesamiento necesaria para ciertas consultas DAX. Un ejemplo en el que auto-exist y ALL() proporcionan resultados inesperados es al aplicar filtros en una o varias columnas de la misma tabla (por ejemplo, al usar sectores), y hay una medida en dicha tabla que usa ALL(). En este caso, auto-exist combina los diferentes filtros en uno y solo aplica el filtrado en las combinaciones de valores existentes. Debido a esta combinación, la medición se calcula sobre las combinaciones de valores existentes, y el resultado se basa en los valores filtrados, en lugar de en todos ellos, como se esperaría. Para obtener más información sobre auto-exist y sus implicaciones en relación con los cálculos, consulte el artículo del Microsoft MVP Alberto Ferrari, en el que se abordan auto-exist en DAX, en sql.bi.com.
En la tabla siguiente se describen los posibles usos de las funciones ALL y ALLEXCEPT en diferentes situaciones.
Función y uso Descripción ALL() Quita todos los filtros de todas partes. ALL() solo se puede usar para borrar filtros, pero no para devolver una tabla. ALL(Table) Quita todos los filtros de la tabla especificada. En efecto, ALL(Table) devuelve todos los valores de la tabla, quitando los filtros de contexto que pudieran haberse aplicado. Esta función resulta útil cuando se trabaja con muchos niveles de agrupación y se quiere crear un cálculo que cree una proporción de un valor agregado al valor total. El primer ejemplo ilustra este escenario. ALL (Column[, Column[, …]]) Quita todos los filtros de las columnas especificadas de la tabla. Todos los demás filtros de las demás columnas de la tabla se siguen aplicando. Todos los argumentos de columna deben proceder de la misma tabla. La variante ALL(Column) resulta útil cuando se quieren quitar filtros de contexto de una o varias columnas específicas y conservar todos los demás filtros de contexto. El segundo y el tercer ejemplo ilustran este escenario. ALLEXCEPT(Table, Column1 [,Column2]...) Quita todos los filtros de contexto de la tabla, excepto los que se aplican a las columnas especificadas. Se trata de un cómodo acceso directo para las situaciones en las que se quieren quitar filtros en muchas columnas de una tabla, pero no en todas. Esta función no se admite para su uso en el modo DirectQuery cuando se utiliza en columnas calculadas o en reglas de seguridad de nivel de fila (RLS).
Ejemplo 1
Calcular la proporción de ventas por categoría con respecto a las ventas totales
Supongamos que quiere hallar la cantidad de ventas de la celda actual, en la tabla dinámica, dividida entre las ventas totales de todos los distribuidores. Para asegurarse de que el denominador es el mismo, independientemente de cómo el usuario de la tabla dinámica pueda filtrar o agrupar los datos, define una fórmula que usa ALL para crear el total general correcto.
En la siguiente tabla se muestran los resultados cuando se crea una medida, Proporción de todas las ventas de distribuidores, con la fórmula mostrada en la sección de código. Para ver cómo funciona esto, agregue el campo CalendarYear al área Etiquetas de fila de la tabla dinámica y el campo ProductCategoryName al área Etiquetas de columna. Luego, arrastre la medida, Proporción de todas las ventas de distribuidores, al área Valores de la tabla dinámica. Para ver los resultados como porcentajes, use las características de formato de Excel para aplicar un formato de número de porcentaje a las celdas que contienen la medida.
Etiquetas de fila | Accesorios | Bicicletas | Ropa | Componentes | Total general |
---|---|---|---|---|---|
2005 | 0,02 % | 9,10 % | 0,04 % | 0,75 % | 9,91 % |
2006 | 0,11 % | 24,71 % | 0,60 % | 4,48 % | 29,90 % |
2007 | 0,36 % | 31,71 % | 1,07 % | 6,79 % | 39,93 % |
2008 | 0,20 % | 16,95 % | 0,48 % | 2,63 % | 20,26 % |
Total general | 0,70 % | 82,47 % | 2,18 % | 14,65 % | 100,00 % |
Fórmula
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
La fórmula se construye de la siguiente manera:
El numerador,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, es la suma de los valores de ResellerSales_USD[SalesAmount_USD] de la celda actual de la tabla dinámica, con filtros de contexto aplicados en CalendarYear y ProductCategoryName.Respecto al denominador, empieza especificando una tabla, ResellerSales_USD, y usa la función ALL para quitar todos los filtros de contexto de la tabla.
Luego, usa la función SUMX para sumar los valores de la columna ResellerSales_USD[SalesAmount_USD]. En otras palabras, obtiene la suma de ResellerSales_USD[SalesAmount_USD] de todas las ventas de distribuidores.
Ejemplo 2
Calcular la proporción de ventas de productos con respecto a las ventas totales a lo largo del año actual
Supongamos que quiere crear una tabla que muestre el porcentaje de ventas en comparación con los años de cada categoría de producto (ProductCategoryName). Para obtener el porcentaje de cada año relativo a cada valor de ProductCategoryName, debe dividir la suma de ventas de ese año en particular y de la categoría de producto entre la suma de las ventas de la misma categoría de producto a lo largo de todos los años. En otras palabras, quiere conservar el filtro en ProductCategoryName, pero quitar el filtro de año al calcular el denominador del porcentaje.
En la siguiente tabla se muestran los resultados cuando se crea una medida, Año de ventas de distribuidores, con la fórmula mostrada en la sección de código. Para ver cómo funciona, agregue el campo CalendarYear al área Etiquetas de fila de la tabla dinámica y el campo ProductCategoryName al área Etiquetas de columna. Para ver los resultados como porcentajes, use las características de formato de Excel para aplicar un formato de número de porcentaje a las celdas que contienen la medida, Año de ventas de distribuidores.
Etiquetas de fila | Accesorios | Bicicletas | Ropa | Componentes | Total general |
---|---|---|---|---|---|
2005 | 3,48 % | 11,03 % | 1,91 % | 5,12 % | 9,91 % |
2006 | 16,21 % | 29,96 % | 27,29 % | 30,59 % | 29,90 % |
2007 | 51,62 % | 38,45 % | 48,86 % | 46,36 % | 39,93 % |
2008 | 28,69 % | 20,56 % | 21,95 % | 17,92 % | 20,26 % |
Total general | 100,00 % | 100,00 % | 100,00 % | 100,00 % | 100,00 % |
Fórmula
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))
La fórmula se crea de la siguiente manera:
El numerador,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, es la suma de los valores de ResellerSales_USD[SalesAmount_USD] de la celda actual de la tabla dinámica, con filtros de contexto aplicados en las columnas CalendarYear y ProductCategoryName.En el denominador, quita el filtro existente en CalendarYear mediante la función ALL(Column). Esto calcula la suma de las filas restantes en la tabla ResellerSales_USD, después de aplicar los filtros de contexto existentes de las etiquetas de columna. El efecto neto es que, para el denominador, la suma se calcula sobre el valor de ProductCategoryName seleccionado (el filtro de contexto implícito) y para todos los valores de año.
Ejemplo 3
Calcular la contribución de las categorías de producto a las ventas totales por año
Supongamos que quiere crear una tabla que muestra el porcentaje de ventas de cada categoría de producto de cada año. Para obtener el porcentaje de cada categoría de producto en un año determinado, debe calcular la suma de ventas de esa categoría de producto en particular (ProductCategoryName) en un año n y, después, dividir el valor resultante entre la suma de ventas del año n de todas las categorías de producto. En otras palabras, quiere conservar el filtro de año, pero quitar el filtro en ProductCategoryName al calcular el denominador del porcentaje.
En la siguiente tabla se muestran los resultados cuando se crea una medida, Nombre de categoría de ventas de distribuidores, con la fórmula mostrada en la sección de código. Para ver cómo funciona esto, agregue el campo CalendarYear al área Etiquetas de fila de la tabla dinámica y el campo ProductCategoryName al área Etiquetas de columna. Luego, agregue la nueva medida al área Valores de la tabla dinámica. Para ver los resultados como porcentajes, use las características de formato de Excel para aplicar un formato de número de porcentaje a las celdas que contienen la nueva medida, Nombre de categoría de ventas de distribuidores.
Etiquetas de fila | Accesorios | Bicicletas | Ropa | Componentes | Total general |
---|---|---|---|---|---|
2005 | 0,25 % | 91,76 % | 0,42 % | 7,57 % | 100,00 % |
2006 | 0,38 % | 82,64 % | 1,99 % | 14,99 % | 100,00 % |
2007 | 0,90 % | 79,42 % | 2,67 % | 17,01 % | 100,00 % |
2008 | 0,99 % | 83,69 % | 2,37 % | 12,96 % | 100,00 % |
Total general | 0,70 % | 82,47 % | 2,18 % | 14,65 % | 100,00 % |
Fórmula
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))
La fórmula se crea de la siguiente manera:
El numerador,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, es la suma de los valores de ResellerSales_USD[SalesAmount_USD] de la celda actual de la tabla dinámica, con filtros de contexto aplicados en los campos CalendarYear y ProductCategoryName.Respecto al denominador, usa la función ALL(Column) para quitar el filtro en ProductCategoryName y calcular la suma de las filas restantes en la tabla ResellerSales_USD, después de aplicar los filtros de contexto existentes de las etiquetas de fila. El efecto neto es que, para el denominador, la suma se calcula sobre el valor de año seleccionado (el filtro de contexto implícito) y para todos los valores de ProductCategoryName.
Contenido relacionado
Funciones de filtro
Función ALL
ALLEXCEPT, función
FILTER (función)