Partilhar via


KEEPFILTERS

Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual

Modifica a forma como filters são aplicados durante a avaliação de uma função CALCULATEorCALCULATETABLE.

Sintaxe

KEEPFILTERS(<expression>)

Parâmetros

Vigência Definição
expression Qualquer expressão.

Regresso value

Uma tabela de values.

Comentários

  • 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 contexto para avaliar a expressão and como tal, filter argumentos para CALCULATEreplaceallfilters existentes nas mesmas colunas. O novo contexto afetado pelo argumento filter para CALCULATE afeta apenas os filters existentes nas colunas mencionadas como parte do argumento filter. Filters em colunas diferentes das mencionadas nos argumentos de CALCULATEor outras funções related permanecem em effectand inalteradas.

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

  • Esta função not é suportada para uso no modo DirectQuery quando usada em colunas calculadas or regras de segurança em nível de 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 CALCULATEorCALCULATETABLE.

As first três 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 and Oregon (ambos os estados combinados).

  • Vendas pela Internet para o estado de Washington and a 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; a filter para Washington and 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 sample AdventureWorks DW, os resultados a seguir são obtidos.

Coluna Value
[$$ in WA] $ 2,467,248.34
[$$ in WA and OR] $ 3,638,239.88
[$$ in WA and BC] $ 4,422,588.44
[$$ in WA and OR ??] $ 3,638,239.88
[$$ in WA !!] $ 2,467,248.34

Observação

Os resultados acima foram formatados em 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 devolver o value para vendas em Washington and Oregon, já que a expressão CALCULATE externa inclui um filter para Washington and Colúmbia Britânica. A resposta é que o comportamento padrão do CALCULATE substitui o filters externo em 'Geografia' [Código da Província do Estado] and substitui seus próprios argumentos filter, porque o filters se aplica à mesma coluna.

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

Filter funçõesCALCULATE funçãoCALCULATETABLE função