KEEPFILTERS
Aplica-se a:Coluna calculada
Tabela calculada
Medida
Cálculo visual
Modifica a forma como os filtros são aplicados durante a avaliação de uma função CALCULATE ou CALCULATETABLE.
Sintaxe
KEEPFILTERS(<expression>)
Parâmetros
Vigência | Definição |
---|---|
expression |
Qualquer expressão. |
Valor de retorno
Uma tabela de valores.
Comentários
Você usa KEEPFILTERS dentro do contexto CALCULATE e CALCULATETABLE funções, para substituir o comportamento padrão dessas funções.
Por padrão, argumentos de filtro em funções como CALCULATE são usados como 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. Os filtros em colunas diferentes das 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: os argumentos de filtro usados em CALCULATE e os filtros nos argumentos da função KEEPFILTER. Em outras palavras, enquanto CALCULATE filtros 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 expressão seguinte 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.
Coluna | Valor |
---|---|
[$$ 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.
Primeiro, examine a expressão, [$$ in WA and OR ??]
. Você pode se perguntar como essa fórmula poderia retornar o valor para vendas em Washington e Oregon, já que a expressão CALCULATE externa inclui um filtro para Washington e Colúmbia Britânica. A resposta é que o comportamento padrão do CALCULATE substitui os filtros externos em 'Geography' [Código da Província do Estado] e substitui seus próprios argumentos de filtro, porque os filtros se aplicam à mesma coluna.
Em seguida, examine a expressão, [$$ in 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 CALCULATE externa inclui um filtro em Washington e British Columbia. A resposta é que KEEPFILTERS modifica o comportamento padrão do CALCULATE e adiciona um filtro adicional. Como a interseção de filtros é usada, agora o filtro externo 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
é adicionado ao argumento de filtro 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
,. Como ambos os filtros se aplicam à mesma coluna, a 'Geography'[State Province Code]="WA"
de filtro resultante é o filtro que é aplicado ao avaliar a expressão.