ALL

La función ALL devuelve todas las filas de una tabla o todos los valores de una o varias columnas, ignorando cualquier filtro que se haya aplicado.

Sintaxis

ALL(
    table
)

ALL(
    column
    [, column[, ...]]
)

Parámetros
  • table: Nombre de la tabla cuyas filas se desea extraer.
  • column: Nombre de las columnas cuyas filas se desea extraer.
Valor devuelto

La función ALL devuelve una tabla.

Información adicional

La función ALL es útil para realizar un cálculo que afecte a todas las filas de una tabla con independencia del contexto del cálculo. Suele utilizarse como función intermedia en un cálculo (normalmente como argumento en una función CALCULATE) para modificar el conjunto de filas sobre el que se quiere realizar. En la práctica -usada como argumento en una función CALCULATE- elimina el filtro del contexto.

Tanto tabla como los argumentos column deben ser referencias a una tabla o a columnas. No es posible utilizar expresiones que devuelvan una tabla o una columna.

El funcionamiento de esta función depende de la sintaxis que se esté usando:

  • Si se está incluyendo como argumento una tabla, la función ALL devuelve la tabla completa, con independencia de los filtros que se estuviesen aplicando.
  • Si se está incluyendo como argumento una o varias columnas, la función ALL devuelve los valores únicos de la columna o columnas en cuestión, ignorando los filtros que se estuviesen aplicando, con formato de tabla. Todas las columnas incluidas como argumentos deberán provenir de la misma tabla.
Ejemplos

Supongamos que en una tabla de ventas se incluye la columna SalesAmount con los importes de las ventas. Si deseamos incluir en un informe una visualización que incluya el desglose de las ventas según la subcategoría, podríamos hacerlo creando una medida que sumase las ventas:

Ventas = SUM(FactSales[SalesAmount])

...y creando una visualización tipo "tabla" con el campo ProductSubcategoryName y la medida recién creada:

Función ALL. Ejemplo de uso

Como cabría esperar, la medida se adapta al contexto incluyendo, para cada subcategoría, solo las filas adecuadas.

Sin embargo, si deseásemos calcular el porcentaje que cada una de estas cifras representa respecto del total (dividiendo cada cifra por el total de ventas), la creación de una medida del tipo:

Ventas % = DIVIDE([Ventas], SUM(FactSales[SalesAmount]))

...sería, obviamente, inútil, pues el denominador de la división también se adaptaría al contexto y solo sumaría los registros afectados por el mismo, con lo que tanto el numerador como el denominador devolverían el mismo valor. Incluyendo esta medida en la tabla anterior obtendríamos un resultado erróneo:

Función ALL. Ejemplo de uso

La única forma de realizar este cálculo correctamente sería asegurándonos de que las ventas totales representadas por el denominador (SUM(FactSales[SalesAmount]) en el ejemplo anterior) incluyen todas las filas de la tabla. Para realizar el cálculo de las ventas totales podemos recurrir a la función SUMX, incluyendo como primer argumento la tabla de ventas, FactSales, tras eliminar los filtros que existan:

SUMX(ALL(FactSales), FactSales[SalesAmount])

Este cálculo devolverá las ventas totales con independencia del contexto en el que se aplique. Ahora podemos definir una medida que calcule el porcentaje representado por cada cifra respecto del total:

Ventas % = DIVIDE(
    [Ventas],
    SUMX(ALL(FactSales), FactSales[SalesAmount])
)

...dando como resultado:

Función ALL. Ejemplo de uso

Siguiendo con el conjunto de datos del ejemplo anterior, podríamos llevar a una matriz las ventas por subcategoría y año:

Función ALL. Ejemplo de uso

Si ahora deseásemos mostrar, junto a cada cifra, el porcentaje que representa respecto de las ventas del año (no respecto del total), deberíamos ser capaces de calcular el denominador implicado en el cálculo que resultaría de sumar las ventas para el año indicado por el contexto pero incluyendo todas las subcategorías.

Para ello podemos partir de la medida [Ventas] ya creada (que simplemente suma los valores de la columna SalesAmount una vez considerado el contexto) pero asegurándonos de que eliminamos el posible filtro que se esté aplicando a las subcategorías, para lo que recurrimos a la función CALCULATE:

Ventas año = CALCULATE(
    [Ventas],
    ALL(DimProductSubcategory[ProductSubcategoryName])
)

El resultado de este cálculo será la suma de las ventas (en el contexto) pero imponiendo como filtro la condición de que se consideren todas las subcategorías.

Ahora ya podríamos calcular el porcentaje que cada cifra representa con respecto al total del año:

Ventas Categoria % = DIVIDE(
    [Ventas],
    [Ventas año]
)

Resultando:

Función ALL. Ejemplo de uso

(se han eliminado las columnas de totales para mejorar la visualización)

La tabla Geography incluye información sobre centenares de puntos geográficos repartidos en 6 países. Para cada uno de ellos hay información no solo del país al que pertenece, sino la región, ciudad y código postal. Esto significa que un país dado, Australia, por ejemplo, aparecerá decenas de veces en la columna Country de dicha tabla (una vez para cada uno de los puntos situados en este país):

Campo Geography[Country]

Pues bien, si utilizamos la función ALL sobre la columna Geography[Country], el resultado no es una tabla conteniendo la misma columna tras eliminar los filtros: es una tabla conteniendo la columna una vez eliminados los valores repetidos:

All countries = ALL(Geography[Country])

Función ALL. Ejemplo de uso

Siguiendo con el mismo ejemplo, si la función ALL se aplica sobre dos campos de la tabla Geography, por ejemplo Country y StateProvince, el resultado será una tabla conteniendo todas las combinaciones existentes de ambos campos (apareciendo una sola vez cada combinación):

All countries % Provinces = ALL(Geography[Country], Geography[StateProvince])

Función ALL. Ejemplo de uso
Categoría
Filtro
Enviado por admin el Mar, 04/12/2018 - 11:15