Uma medida DAX nunca tem um resultado único. Ela tem um resultado por célula, porque cada célula do visual aplica um conjunto diferente de filtros. Esse conjunto é o contexto de filtro.
Se [Receita] = SUM(fVendas[Receita]) mostra R$ 12 mi no total e R$ 800 mil na linha 'Sudeste / Março', é porque a segunda célula somou a mesma coluna com dois filtros aplicados: Região = Sudeste e Mês = Março.
| De onde vem o contexto de filtro | Exemplo |
|---|---|
| Linhas e colunas do visual | Categoria no eixo de um gráfico de barras |
| Segmentações (slicers) | Ano = 2025 |
| Filtros de visual, página e relatório | Loja = Matriz |
| Interação entre visuais (cross-filter) | Clique em uma fatia da rosca |
| Filtros escritos em CALCULATE | CALCULATE([Receita], dProduto[Categoria] = "Bebidas") |
| Segurança em nível de linha (RLS) | Vendedor só enxerga a própria carteira |
Contexto de linha
Contexto de linha é diferente: é a noção de 'linha atual'. Ele existe automaticamente dentro de uma coluna calculada e dentro de funções iteradoras (SUMX, AVERAGEX, FILTER). Em uma medida simples, ele NÃO existe.
-- ERRO: não existe 'linha atual' em uma medidaReceita Errada = fVendas[Quantidade] * fVendas[PrecoUnitario] -- CERTO: o iterador cria contexto de linhaReceita = SUMX( fVendas, fVendas[Quantidade] * fVendas[PrecoUnitario] )Transição de contexto, na prática
-- Sem transição: soma a receita da tabela inteira para CADA cliente. Errado.Teste Sem Transicao =SUMX( dCliente, SUM( fVendas[Receita] ) ) -- Com transição: a medida [Receita] dispara CALCULATE implícito,-- e a linha atual de dCliente vira filtro. Correto.Teste Com Transicao =SUMX( dCliente, [Receita] )