Partilhar via


Função ALLSELECTED (DAX)

Remove filtros de contexto de colunas e linhas na consulta atual, mantendo todo os outros filtros de contexto ou filtros explícitos.

A função ALLSELECTED obtém o contexto que representa todas as linhas e colunas na consulta, mantendo filtros explícitos e contextos que não sejam de filtros de linhas e de colunas. Esta função pode ser usada para obter totais visuais em consultas.

Sintaxe

ALLSELECTED([<tableName> | <columnName>])

Parâmetros

  • tableName
    O nome de uma tabela existente, usando a sintaxe DAX padrão. Este parâmetro não pode ser uma expressão. Esse parâmetro é opcional.

  • columnName
    O nome de uma coluna existente que usa a sintaxe DAX padrão, em geral totalmente qualificado. Ele não pode ser uma expressão. Esse parâmetro é opcional.

Valor de retorno

O contexto da consulta sem filtros de coluna e de linha.

Comentários

  • Essa função utiliza um ou nenhum argumento. Se existir um argumento, ele será tableName ou columnName.

  • Esta função é diferente de ALL() porque retém todos os filtros definidos dentro da consulta explicitamente, e retém todos os filtros de contexto que não sejam filtros de linhas e de colunas.

Exemplo

O exemplo a seguir mostra como gerar níveis diferentes de totais visuais em um relatório de tabela usando expressões DAX. No relatório, dois (2) filtros anteriores foram aplicados aos dados de Vendas do Revendedor; um em Grupo de Região de Vendas = Europa e outro em Tipo de Promoção = Desconto por Volume. Após a aplicação dos filtros, totais visuais podem ser calculados para todo o relatório, para Todos os Anos ou para Todas as Categorias de Produtos. Além disso, para fins de demonstração, o total geral de Todas as Vendas do Revendedor é obtido também, removendo todos os filtros no relatório. A avaliação da expressão DAX a seguir resulta em uma tabela com todas as informações necessárias para criar uma tabela com Totais Visuais.

define
measure 'Reseller Sales'[Reseller Sales Amount]=sum('Reseller Sales'[Sales Amount])
measure 'Reseller Sales'[Reseller Grand Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALL('Reseller Sales'))
measure 'Reseller Sales'[Reseller Visual Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED())
measure 'Reseller Sales'[Reseller Visual Total for All of Calendar Year]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Date'[Calendar Year]))
measure 'Reseller Sales'[Reseller Visual Total for All of Product Category Name]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Product Category'[Product Category Name]))
evaluate
CalculateTable(
    //CT table expression
    summarize( 
//summarize table expression
crossjoin(distinct('Product Category'[Product Category Name]), distinct('Date'[Calendar Year]))
//First Group by expression
, 'Product Category'[Product Category Name]
//Second Group by expression
, 'Date'[Calendar Year]
//Summary expressions
, "Reseller Sales Amount", [Reseller Sales Amount]
, "Reseller Grand Total", [Reseller Grand Total]
, "Reseller Visual Total", [Reseller Visual Total]
, "Reseller Visual Total for All of Calendar Year", [Reseller Visual Total for All of Calendar Year]
, "Reseller Visual Total for All of Product Category Name", [Reseller Visual Total for All of Product Category Name]
)
//CT filters
, 'Sales Territory'[Sales Territory Group]="Europe", 'Promotion'[Promotion Type]="Volume Discount"
)
order by [Product Category Name], [Calendar Year]

Depois de executar a expressão acima no SQL Server Management Studio no Modelo de Tabela AdventureWorks DW 2012, você obtém os seguintes resultados:

[Product Category Name]

[Calendar Year]

[Reseller Sales Amount]

[Reseller Grand Total]

[Reseller Visual Total]

[Reseller Visual Total for All of Calendar Year]

[Reseller Visual Total for All of Product Category Name]

Accessories

2000

80450596.9823

877006.7987

38786.018

Accessories

2001

80450596.9823

877006.7987

38786.018

Accessories

2002

625.7933

80450596.9823

877006.7987

38786.018

91495.3104

Accessories

2003

26037.3132

80450596.9823

877006.7987

38786.018

572927.0136

Accessories

2004

12122.9115

80450596.9823

877006.7987

38786.018

212584.4747

Accessories

2005

80450596.9823

877006.7987

38786.018

Accessories

2006

80450596.9823

877006.7987

38786.018

Bikes

2000

80450596.9823

877006.7987

689287.7939

Bikes

2001

80450596.9823

877006.7987

689287.7939

Bikes

2002

73778.938

80450596.9823

877006.7987

689287.7939

91495.3104

Bikes

2003

439771.4136

80450596.9823

877006.7987

689287.7939

572927.0136

Bikes

2004

175737.4423

80450596.9823

877006.7987

689287.7939

212584.4747

Bikes

2005

80450596.9823

877006.7987

689287.7939

Bikes

2006

80450596.9823

877006.7987

689287.7939

Clothing

2000

80450596.9823

877006.7987

95090.7757

Clothing

2001

80450596.9823

877006.7987

95090.7757

Clothing

2002

12132.4334

80450596.9823

877006.7987

95090.7757

91495.3104

Clothing

2003

58234.2214

80450596.9823

877006.7987

95090.7757

572927.0136

Clothing

2004

24724.1209

80450596.9823

877006.7987

95090.7757

212584.4747

Clothing

2005

80450596.9823

877006.7987

95090.7757

Clothing

2006

80450596.9823

877006.7987

95090.7757

Components

2000

80450596.9823

877006.7987

53842.2111

Components

2001

80450596.9823

877006.7987

53842.2111

Components

2002

4958.1457

80450596.9823

877006.7987

53842.2111

91495.3104

Components

2003

48884.0654

80450596.9823

877006.7987

53842.2111

572927.0136

Components

2004

80450596.9823

877006.7987

53842.2111

212584.4747

Components

2005

80450596.9823

877006.7987

53842.2111

Components

2006

80450596.9823

877006.7987

53842.2111

As colunas no relatório são:

  • Reseller Sales Amount
    O valor real de Vendas do Revendedor para o ano e a categoria de produto. Esse valor aparece em uma célula no centro do relatório na interseção do ano e da categoria.

  • Reseller Visual Total for All of Calendar Year
    O valor total de uma categoria de produto em todos os anos. Esse valor aparece no fim de uma coluna ou linha de uma determinada categoria de produto e em todos os anos no relatório.

  • Reseller Visual Total for All of Product Category Name
    O valor total de um ano em todas as categorias de produto. Esse valor aparece no fim de uma coluna ou linha de um determinado ano e em todas as categorias de produto no relatório.

  • Reseller Visual Total
    O valor total de todos os anos e categorias de produto. Esse valor geralmente aparece no canto inferior direito da tabela.

  • Reseller Grand Total
    Esse é o total geral de todas as vendas do revendedor, antes da aplicação de qualquer filtro; você deve observar a diferença com [Reseller Visual Total]. Você se lembra de que esse relatório inclui dois (2) filtros, um no Grupo de Categorias de Produto e o outro em Tipo de Promoção.

O exemplo a seguir mostra o uso de ALLSELECTED() sem argumentos para mostrar como calcular uma taxa sobre o valor total mostrado em uma tabela que foi filtrada usando segmentações de dados horizontais e verticais. Este exemplo usa o SQL Server 2012, o PowerPivot para Excel e dados de exemplo PowerPivot (DAX_AdventureWorks).

  • Na lista de campos do PowerPivot, arraste a coluna, ResellerSales [SalesAmount_USD], até a área Valores.

  • Arraste Promotion[PromotionType] até a área Segmentações de Dados Verticais. Selecione as segmentações de dados para Discontinued Product, Excess Inventory e Seasonal Discount.

  • Arraste SalesTerritory[SalesTerritoryGroup] até a área Segmentações de Dados Horizontais. Selecione a segmentação de dados para Europe.

  • O valor de Sum Of SalesAmount_USD deve ser $19.614,37

  • Arraste ProductCategory[ProductCategoryName] até a área Rótulos de Linha e DateTime[CalendarYear] até a área Rótulos de Coluna.

    Sua tabela deve ter a seguinte aparência:

     

    SalesTerritoryGroup

     

     

     

     

     

     

    Europa

    North America

     

     

     

     

     

    Pacific

    NA

     

     

     

     

     

     

     

     

     

     

     

    PromotionType

     

     

     

     

     

     

    Discontinued Product

     

    Sum of SalesAmount_USD

    Rótulos de Coluna

     

     

     

    Excess Inventory

     

    Rótulos de Linha

    2006

    2007

    2008

    Grand Total

    New Product

     

    Accessories

    $1,111.22

    $3,414.43

     

    $4,525.66

    No Discount

     

    Bikes

    $8,834.94

    $6,253.78

    $15,088.72

    Seasonal Discount

     

    Total Geral

    $9,946.16

    $3,414.43

    $6,253.78

    $19,614.37

    Volume Discount

     

     

     

     

     

     

  • Usando uma calculadora, verifique se a quantidade $3.414,43 (para Acessórios em 2007) representa 17,41% de $19.614,37.

  • Usando uma calculadora, verifique se o valor $6.253,78 (para Bikes em 2008) representa 31,88% de $19.614,37.

  • Usando uma calculadora, verifique se o valor $15.088,72 (para Bikes Grand Total) representa 76,93% de $19.614,37.

  • Remova ResellerSales [SalesAmount_USD] da área Valores.

  • Crie uma medida, denominada Reseller Sales Ratio, na tabela ResellerSales, usando a seguinte fórmula (formate o resultado como percentual):

=SUM(ResellerSales_USD[SalesAmount_USD])/ CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLSELECTED())

Sua tabela deve ter esta aparência:

SalesTerritoryGroup

Europa

North America

Pacific

NA

PromotionType

Discontinued Product

Reseller Sales Ratio

Rótulos de Coluna

Excess Inventory

Rótulos de Linha

2006

2007

2008

Grand Total

New Product

Accessories

5.67 %

17.41 %

23.07 %

No Discount

Bikes

45.04 %

31.88 %

76.93 %

Seasonal Discount

Total Geral

50.71 %

17.41 %

31.88 %

100.00 %

Volume Discount

  • Compare os resultados da sua calculadora com os fornecidos por Reseller Sales Ratio, os quais devem coincidir; seu valor de denominador é corrigido como o valor no final da tabela.

  • Como a fórmula de CALCULATE no denominador usa a função ALLSELECTED, o denominador representa o total principal de vendas, no final da tabela, depois que segmentações de dados verticais, horizontais e de página forem aplicadas; mas, antes da aplicação de segmentações de dados de linha e de coluna.

    Observação: se você tiver filtros explícitos em sua expressão, esses filtros também serão aplicados à expressão.