MANTERFILTROS

Aplica-se a: Coluna calculada Tabela calculada Medida Cálculo visual

Modifica como os filtros são aplicados durante a avaliação de uma função CALCULATE ou CALCULATETABLE.

Sintaxe

KEEPFILTERS(<expression>)  

Parâmetros

Termo Definição
expressão Qualquer expressão.

Valor devolvido

Uma tabela de valores.

Observações

  • Você usa KEEPFILTERS dentro das funções de contexto CALCULATE e CALCULATETABLE, para substituir o comportamento padrão dessas funções.

  • Por padrão, argumentos de filtro em funções como CALCULATE são usados como o contexto para avaliar a expressão e, como tal, argumentos de filtro para CALCULATE substituem todos os filtros existentes nas mesmas colunas. O novo contexto afetado pelo argumento filter para CALCULATE afeta apenas os filtros existentes nas colunas mencionadas como parte do argumento filter. Filtros em colunas diferentes daquelas mencionadas nos argumentos de CALCULATE ou outras funções relacionadas permanecem em vigor e inalterados.

  • A função KEEPFILTERS permite modificar esse comportamento. Quando você usa KEEPFILTERS, todos os filtros existentes no contexto atual são comparados com as colunas nos argumentos de filtro, e a interseção desses argumentos é usada como o contexto para avaliar a expressão. O efeito líquido sobre qualquer coluna é que ambos os conjuntos de argumentos se aplicam: tanto os argumentos de filtro usados em CALCULATE quanto os filtros nos argumentos da função KEEPFILTER. Em outras palavras, enquanto os filtros CALCULATE substituem o contexto atual, KEEPFILTERS adiciona filtros ao contexto atual.

  • Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).

Exemplo

O exemplo a seguir leva você por alguns cenários comuns que demonstram o uso da função KEEPFILTERS como parte de uma fórmula CALCULATE ou CALCULATETABLE.

As três primeiras expressões obtêm dados simples para serem usados para comparações:

  • Vendas pela Internet para o estado de Washington.

  • Vendas pela Internet para os estados de Washington e Oregon (ambos os estados combinados).

  • Vendas pela Internet para o estado de Washington e a província da Colúmbia Britânica (ambas as regiões combinadas).

A quarta expressão calcula as vendas pela Internet para Washington e Oregon, enquanto o filtro para Washington e Colúmbia Britânica é aplicado.

A próxima expressão calcula as vendas pela Internet para Washington e Oregon, mas usa KEEPFILTERS; o filtro para Washington e Colúmbia Britânica faz parte do contexto anterior.

EVALUATE ROW(  
  "$$ in WA"  
    , CALCULATE('Internet Sales'[Internet Total Sales]  
                , 'Geography'[State Province Code]="WA"  
      )  
, "$$ in WA and OR"  
    , CALCULATE('Internet Sales'[Internet Total Sales]  
               , 'Geography'[State Province Code]="WA"   
                 || 'Geography'[State Province Code]="OR"  
      )  
, "$$ in WA and BC"  
    , CALCULATE('Internet Sales'[Internet Total Sales]  
               , 'Geography'[State Province Code]="WA"   
                 || 'Geography'[State Province Code]="BC"  
      )  
, "$$ in WA and OR ??"  
    , CALCULATE(  
          CALCULATE('Internet Sales'[Internet Total Sales]  
                    ,'Geography'[State Province Code]="WA"   
                      || 'Geography'[State Province Code]="OR"  
          )  
          , 'Geography'[State Province Code]="WA"   
            || 'Geography'[State Province Code]="BC"  
      )  
, "$$ in WA !!"  
    , CALCULATE(  
          CALCULATE('Internet Sales'[Internet Total Sales]  
                   , KEEPFILTERS('Geography'[State Province Code]="WA"   
                              || 'Geography'[State Province Code]="OR"  
                     )  
          )  
          , 'Geography'[State Province Code]="WA"   
            || 'Geography'[State Province Code]="BC"  
      )  
)  

Quando essa expressão é avaliada em relação ao banco de dados de exemplo AdventureWorks DW, os resultados a seguir são obtidos.

Column Value
[$$ em WA] $ 2,467,248.34
[$$ em WA e OR] $ 3,638,239.88
[$$ em WA e BC] $ 4,422,588.44
[$$ em WA e OR ??] $ 3,638,239.88
[$$ em WA !!] $ 2,467,248.34

Nota

Os resultados acima foram formatados em uma tabela, em vez de uma única linha, para fins educacionais.

Primeiro, examine a expressão, [$$ em WA e OR ??]. Você pode se perguntar como essa fórmula poderia retornar o valor para vendas em Washington e Oregon, já que a expressão externa CALCULATE inclui um filtro para Washington e British Columbia. A resposta é que o comportamento padrão de CALCULATE substitui os filtros externos em 'Geography' [State Province Code] e substitui seus próprios argumentos de filtro, porque os filtros se aplicam à mesma coluna.

Em seguida, examine a expressão, [$$ em WA !!]. Você pode se perguntar como essa fórmula poderia retornar o valor para vendas em Washington e nada mais, já que o filtro de argumento inclui Oregon e a expressão externa CALCULATE inclui um filtro em Washington e British Columbia. A resposta é que KEEPFILTERS modifica o comportamento padrão de CALCULATE e adiciona um filtro adicional. Como a interseção de filtros é usada, agora o filtro externo 'Geografia'[Código da Província do Estado]="WA" || 'Geography'[State Province Code]="BC") é adicionado ao argumento de filtro 'Geography'[State Province Code]="WA" || 'Geografia'[Código da Província do Estado]="OR",. Como ambos os filtros se aplicam à mesma coluna, o filtro resultante 'Geography'[State Province Code]="WA" é o filtro aplicado ao avaliar a expressão.

Funções de filtro
Função CALCULAR
Função CALCULATETABLE