Power BI Filter Context

O filter contexto é o conjunto de filtros aplicados ao modelo de dados antes do início da avaliação de uma measure DAX.

Um Filter Context é um conjunto de filtros nas linhas do modelo de dados. Sempre há um contexto de filtro para expressões DAX. Se o contexto do filtro estiver vazio, uma expressão DAX poderá iterar todas as linhas das tabelas em um modelo de dados. Quando um contexto de filtro não está vazio, ele limita as linhas que uma expressão DAX pode iterar em um modelo de dados.

Por exemplo, a célula destacada na figura a seguir possui um contexto de filtro para o ano de 2007, cor igual a preto e marca do produto igual a Contoso. Essa é a razão pela qual seu valor é diferente, por exemplo, daquele que mostra o mesmo ano para a Fabrikam.

Fonte: https://www.sqlbi.com/articles/row-context-and-filter-context-in-dax/

Filter Context pode ser definido implicitamente pela interface do usuário (como a tabela dinâmica no Excel) ou explicitamente por uma expressão DAX usando CALCULATE ou CALCULATETABLE.

Qualquer filtro aplicado às tabelas dinâmicas no Excel ou a qualquer elemento da interface do usuário do Power BI Desktop ou do Power View sempre afeta o contexto do filtro – nunca afeta diretamente o Row Context.

Itens que afetam o Filter Context:

  • Relacionamentos das tabelas (atenção para o direcionamento, já falamos disso no tópico de Relationships),
  • Pelos eixos de um visual,
  • Por cross-filtering entre os visuais de um relatório,
  • Filtros de slicers,
  • Filtros a nível de visual, página e relatório.

Na imagem abaixo temos um contexto de filtro sendo aplicado a uma mesma measure. A measure em questão é Total Sales e ela é exibida em três diferentes FILTER CONTEXT, no primeiro chart ela sozinha e depois segregada por Year e por Product ID. Portanto, perceba que a medida apresenta o mesmo resultado de forma diferente a depender do FILTER CONTEXT que ela se aplica.

Seguindo a mesma lógica explicada acima, seleções feitas nos gráficos, interações entre os gráficos, afetam também o resultado da measure DAX, logo, interações entre gráficos também afetam o FILTER CONTEXT. No caso abaixo foi feita uma seleção no gráfico do meio pelo ano 2015 e podemos perceber que os outros dois gráficos foram afetados de acordo.

Selecionar 2015 no segundo visual alterou o contexto do filtro (FILTER CONTEXT) para a medida DAX. Ele modificou o primeiro visual para igualar as vendas de 2015: US $ 0,66 milhão. Ele também dividiu o total de vendas por ID do produto, mas mostra apenas os resultados de 2015. No entanto, a measure do DAX permanece a mesma (Total Sales = sum(‘Sales OrderDetails'[Total Price])).

Funções DAX que afetam Filter Context

Você pode controlar o contexto do filtro e sua propagação usando funções DAX, como CALCULATE, CALCULATETABLE, ALL, VALUES, FILTER, USERELATIONSHIP, and CROSSFILTER. Vamos usar CALCULATE para exemplificar.

A sintaxe de CALCULATE é: CALCULATE (expression, filter1, filter2).

Então, se quisermos calcular o Total Sales de 2017, independente do filter contexto que esteja aplicado ao relatório no momento, podemos simplesmente criar uma measure assim:

CALCULATE( TOTALSALES, ANO = 2014)

Perceba que no resultado abaixo a measure que criamos ignora a coluna de DUEDATE YEAR e exibe simplesmente o resultado de 2014 em todas as linhas.

Claro que, se aplicarmos outros filtros que afetem o modelo de dados geral, eles também irão impactar o resultado da nossa measure, como na imagem abaixo. Isso acontece porque quando criamos medidas com filtros explícitos nós removemos do FILTER CONTEXT os filtros naquele mesmo item.

Então como nossa measure diz “CALCULATE( TOTALSALES, ANO = 2014)”, o que acontece é sempre que houver algum ANO no Filter Context ele será substituído por 2014.

Mais referências:

Published by Pedro Carvalho

Apaixonado por análise de dados e Power BI

Deixe uma resposta

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: