Filtros de contexto no DAX: O guia definitivo para dominar o comportamento das suas medidas
Se você trabalha com Power BI, provavelmente já se deparou com uma medida que não retornava o valor esperado. E, muitas vezes, o "culpado" é ele: o filtro de contexto. Neste post, vamos mergulhar fundo nos filtros de contexto no DAX, entendendo como eles funcionam, como impactam seus cálculos e, o mais importante, como controlá-los para que você tenha total domínio sobre o comportamento das suas medidas. Prepare-se para um guia definitivo, repleto de exemplos práticos e explicações claras!
POWER BIDICASFILTROS
Henrique Bueno
4/24/20253 min read


O que é filtro de contexto no DAX?
No DAX, filtro de contexto é a regra que define "qual subconjunto dos dados será considerado" durante a execução de um cálculo.
Em outras palavras: quando você usa uma medida em um gráfico, tabela ou cartão, o DAX automaticamente aplica os filtros do visual para calcular aquele valor. Isso é o filtro de contexto em ação.
Existem dois tipos principais:
Filtro de linha (Row Context): Aparece ao iterar linha por linha de uma tabela.
Filtro de contexto (Filter Context): É criado por filtros explícitos (como slicers e segmentações) ou implícitos (pelo visual em uso).
Neste artigo, vamos focar totalmente no filtro de contexto, pois ele é o que mais afeta suas medidas em dashboards reais.
Como o filtro de contexto é criado?
Existem diversas formas de aplicar filtros de contexto em um modelo DAX. Veja os principais:
1. Filtros nos visuais
Se você cria um gráfico de barras por produto, o DAX automaticamente filtra os dados para cada produto individualmente ao calcular a medida. Por exemplo, se você tiver uma medida chamada Total Vendas = SUM(Vendas[Valor]), o Power BI aplicará o filtro de produto dinamicamente conforme cada barra do gráfico.
2. Slicers e segmentações
Ao selecionar uma data ou categoria em um slicer, o DAX aplica esse filtro nas medidas automaticamente — sem necessidade de alterar nenhuma fórmula.
3. Filtros de página e de relatório
Filtros aplicados diretamente na página ou no nível do relatório também compõem o filtro de contexto. Eles são globais e impactam todos os visuais.
4. Filtros via funções DAX
Funções como CALCULATE, FILTER, ALL e REMOVEFILTERS manipulam diretamente o filtro de contexto. Esse é o verdadeiro poder do DAX.
Manipulando filtros de contexto com DAX
Agora começa a mágica. Vamos aprender a alterar, remover ou adicionar filtros de contexto usando funções DAX.
CALCULATE: o rei da manipulação de contexto
A função CALCULATE recalcula uma medida sob um novo filtro de contexto. Por exemplo:
Vendas Caneta = CALCULATE([Total Vendas], Produtos[Nome] = "Caneta")
Essa medida sempre trará o total de vendas do produto "Caneta", mesmo que o visual esteja mostrando outro produto. O contexto anterior é substituído.
ALL: removendo filtros do contexto
Se você quiser ignorar completamente o filtro aplicado por um visual (como categoria ou produto), pode usar ALL. Exemplo:
Total Vendas Geral = CALCULATE([Total Vendas], ALL(Produtos))
Essa medida trará o total de vendas considerando todos os produtos, independentemente do que o visual está filtrando.
FILTER: criando filtros mais inteligentes
A função FILTER permite aplicar condições mais complexas dentro do CALCULATE. Por exemplo:
Vendas Produtos Caros = CALCULATE([Total Vendas], FILTER(Produtos, Produtos[Preço] > 100))
Aqui, a medida considera apenas os produtos cujo preço é maior que R$100, independentemente de qualquer filtro aplicado no visual.
Contexto de filtro vs contexto de linha
É muito comum confundir esses dois. A diferença fundamental é:
Linha: é quando o DAX está iterando uma tabela, linha por linha. Acontece em funções como SUMX, FILTER, ADDCOLUMNS.
Filtro: é o subconjunto de dados que será considerado em um cálculo. Ocorre no uso de CALCULATE, visuais, slicers, etc.
Exemplo de contexto de linha:
Lucro por Produto = SUMX(Produtos, Produtos[Preço] - Produtos[Custo])
Aqui o DAX está passando linha a linha pela tabela Produtos e fazendo a subtração.
Agora, um exemplo de contexto de filtro:
Lucro Total = CALCULATE(SUM(Produtos[Preço] - Produtos[Custo]))
Aqui o cálculo acontece sobre o subconjunto de dados filtrado no contexto atual (ex: o produto selecionado no visual).
Erros comuns com filtros de contexto
1. Achar que a medida ignora o visual
Por padrão, todas as medidas respeitam o contexto do visual. Só deixam de fazer isso se você explicitamente usar ALL, REMOVEFILTERS ou KEEPFILTERS.
2. Usar CALCULATE sem perceber que está mudando o filtro
O CALCULATE não apenas avalia a expressão. Ele altera o filtro de contexto, substituindo filtros anteriores ou adicionando novos.
3. Misturar contexto de linha e de filtro sem clareza
Isso é uma fonte comum de bugs. Saber onde um FILTER está iterando e onde um CALCULATE está apenas aplicando filtros pode salvar horas de depuração.
Dica prática: inspecionando o filtro de contexto atual
Você pode criar uma medida que mostra os valores ativos no contexto atual com:
Valores de Filtro = CONCATENATEX(VALUES(Produtos[Nome]), Produtos[Nome], ", ")
Isso é ótimo para entender porque sua medida está retornando determinado resultado. Principalmente quando você está filtrando dinamicamente por categoria, cliente ou data.
Conclusão: Domine o contexto, domine o DAX
Dominar filtros de contexto é o divisor de águas entre fórmulas básicas e análises avançadas no Power BI.
A boa notícia? Agora que você entendeu os pilares, já está à frente de 90% dos usuários. E quanto mais você praticar com CALCULATE, ALL e FILTER, mais natural vai parecer controlar o que o DAX está realmente calculando.
Quer um desafio? Pegue uma medida antiga do seu projeto e reescreva ela tentando controlar os filtros manualmente. Questione: "quais filtros estão ativos aqui?" e "como posso alterá-los com DAX?"
Curtiu o conteúdo?
Compartilha com quem está começando no DAX ou com aquele colega que sempre diz "minha medida tá errada, mas não sei por quê... E continue Ligado aqui no BI com Bueno para mais dicas sobre Power BI, Fabric, Azure e todas tecnologias relacionadas a dados no mundo microsoft
Dados
© 2024. All rights reserved.