KEEPFILTERS
Aplica-se a:Coluna calculadaTabela calculadaMedidaCá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. |
Retornar valor
Uma tabela de valores.
Comentários
Use KEEPFILTERS nas funções de contexto CALCULATE e CALCULATETABLE, para substituir o comportamento padrão dessas funções.
Por padrão, os argumentos de filtro em funções como CALCULATE são usados como o contexto para avaliar a expressão e, dessa forma, os argumentos de filtro da função CALCULATE substituem todos os filtros existentes nas mesmas colunas. O novo contexto efetivado pelo argumento de filtro para a função CALCULATE afeta apenas filtros existentes em colunas mencionadas como parte do argumento de filtro. Os filtros de colunas diferentes daquelas mencionados nos argumentos da função CALCULATE ou outras funções relacionadas permanecem em vigor e inalterados.
A função KEEPFILTERS permite que você modifique esse comportamento. Quando você usa KEEPFILTERS, todos os filtros existentes no contexto atual são comparados com as colunas dos argumentos de filtro e a interseção desses argumentos é usada como o contexto para avaliar a expressão. O efeito líquido em qualquer uma das colunas é que ambos os conjuntos de argumentos se aplicam: ambos os argumentos de filtro usados na função CALCULATE e os filtros usados nos argumentos da função KEEPFILTER. Em outras palavras, enquanto os filtros da CALCULATE substituem o contexto atual, a KEEPFILTERS adiciona filtros ao contexto atual.
Não há suporte para a função ser usada no modo DirectQuery quando usada em regras RLS (segurança em nível de linha) ou colunas calculadas.
Exemplo
O exemplo a seguir orienta 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 a 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 a função 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 com relação ao banco de dados de exemplo AdventureWorks DW, os resultados a seguir são obtidos.
Coluna | Valor |
---|---|
[$$ em WA] | US$ 2.467.248,34 |
[$$ em WA e OR] | US$ 3.638.239,88 |
[$$ em WA e BC] | US$ 4.422.588,44 |
[$$ em WA e OR ??] | US$ 3.638.239,88 |
[$$ em WA !!] | US$ 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 [$$ em WA e OR ??]. Você pode se perguntar como essa fórmula poderia retornar o valor de vendas para 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 da função CALCULATE substitui os filtros externos em 'Geography'[State Province Code] e substitui seus próprios argumentos de filtro, pois 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 de vendas para Washington e Oregon, já que o filtro do argumento inclui Oregon e a expressão CALCULATE externa inclui um filtro para Washington e Colúmbia Britânica. A resposta é que a função KEEPFILTERS modifica o comportamento padrão da função CALCULATE e inclui 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, o filtro resultante 'Geography'[State Province Code]="WA" é o filtro aplicado ao avaliar a expressão.