Ler em inglês

Compartilhar via


KEEPFILTERS

aplica-se a:coluna calculadatabela calculadaMeasurecálculo visual

Modifica como os filters são aplicados ao avaliar uma função CALCULATEorCALCULATETABLE.

Sintaxe

DAX
KEEPFILTERS(<expression>)  

Parâmetros

Prazo Definição
expression Qualquer expressão.

Retornar value

Uma tabela de values.

Observações

  • Você usa KEEPFILTERS dentro do contexto CALCULATEandCALCULATETABLE funções, para substituir o comportamento padrão dessas funções.

  • Por padrão, filter argumentos em funções como CALCULATE são usados como o contexto para avaliar a expressão, and como filter argumentos para CALCULATEreplaceallfilters existentes nas mesmas colunas. O novo contexto efetuado pelo argumento filter para CALCULATE afeta apenas filters existentes em colunas mencionadas como parte do argumento filter. Filters em colunas diferentes daquelas mencionadas nos argumentos de CALCULATEor outras funções related permanecem em effectand sem controle.

  • A função KEEPFILTERS permite modificar esse comportamento. Quando você usa KEEPFILTERS, qualquer filters existente no contexto atual é comparada com as colunas nos argumentos filter, and a interseção desses argumentos é usada como o contexto para avaliar a expressão. A rede effect sobre qualquer coluna é que ambos os conjuntos de argumentos se aplicam: ambos os argumentos filter usados em CALCULATEand o filters nos argumentos da função KEEPFILTER. Em outras palavras, enquanto CALCULATEfiltersreplace o contexto atual, KEEPFILTERS adiciona filters ao contexto atual.

  • Essa função not tem suporte para uso no modo DirectQuery quando usada em colunas calculadas or regras de RLS (segurança em nível de linha).

Exemplo

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

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

  • Vendas pela Internet para o estado de Washington.

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

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

A quarta expressão calcula as vendas pela Internet para Washington and Oregon, enquanto a filter para Washington and Colúmbia Britânica é aplicada.

A expressão next calcula as vendas pela Internet para Washington and Oregon, mas usa KEEPFILTERS; o filter de Washington and Colúmbia Britânica faz parte do contexto anterior.

DAX
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 sample AdventureWorks DW, os resultados a seguir são obtidos.

Coluna Value
[$$ in WA] R$ 2.467.248,34
[$$ in WA and OR] R$ 3.638.239,88
[$$ in WA and BC] R$ 4.422.588,44
[$$ in WA and OR ??] R$ 3.638.239,88
[$$ in WA !!] R$ 2.467.248,34

Observação

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

First, examine a expressão [$$ in WA and OR ??]. Você pode se perguntar como essa fórmula poderia retornar o value de vendas em Washington and Oregon, já que a expressão de CALCULATE externa inclui um filter para Washington and Colúmbia Britânica. A resposta é que o comportamento padrão de CALCULATE substitui a filters externa em 'Geography'[Código da Província de Estado] and substitui seus próprios argumentos filter, pois o filters se aplica à mesma coluna.

Next, examine a expressão [$$ in WA !!]. Você pode se perguntar como essa fórmula poderia retornar o value de vendas em Washington and nada mais, já que o argumento filter inclui Oregon and a expressão de CALCULATE externa inclui um filter em Washington and Colúmbia Britânica. A resposta é que KEEPFILTERS modifica o comportamento padrão de CALCULATEand adiciona um filteradicional. Como a interseção de filters é usada, now a filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") externa é adicionada ao argumento filter'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. Como ambos filters se aplicam à mesma coluna, o filter'Geography'[State Province Code]="WA" resultante é o filter aplicado ao avaliar a expressão.

Filter funções
de função
de função