Saltar al contenido
Docs

Esta página aún no está traducida — estás leyendo la versión en portugués. Ver en portugués

Candidato a GAActualizado el 2026-09-08

Contexto de linha e contexto de filtro

A ideia central das fórmulas estilo DAX — quando uma medida é avaliada por linha e quando é avaliada dentro de um recorte.

En esta página (9)

Página conceitual. Se há um conceito que separa "planilha" de "modelo analítico", é este: contexto. Entender contexto de linha e contexto de filtro é o que faz suas medidas darem o número certo em qualquer visual. A referência das funções está em Medidas, fórmulas e KPIs e no catálogo de fórmulas; aqui explicamos o modelo mental.

Exemplos com o workspace sintético Comércio Aurora Ltda (aurora), tabela fato vendas e dimensões produtos, filiais, calendario.

Maturidade

O motor de fórmulas (contexto de filtro real, CALCULAR, transição de contexto, iteradores) é GA-candidato — congelado pelo conjunto de testes de referência, com resultado idêntico a cada execução. Execução no datalake de produção é NÃO MEDIDO.


As duas perguntas que toda medida responde#

Quando uma medida é calculada, o motor responde duas coisas:

  1. Sobre quais linhas? — isso é o contexto de filtro.
  2. Uma linha por vez, ou o conjunto de uma vez? — isso distingue contexto de linha de agregação.

Contexto de linha#

Existe quando a fórmula é avaliada uma linha de cada vez. É o caso das colunas calculadas e do que acontece dentro de um iterador.

  • Coluna calculada margem = vendas.valor - vendas.custo: para cada linha de vendas, o motor conhece o valor e o custo daquela linha e faz a subtração. Não há soma aqui — é linha a linha.

Uma coluna solta (ex.: vendas.valor) só faz sentido em contexto de linha. Se você a usa numa medida agregada sem dizer como agregar, o editor recusa com um erro em português ("coluna solta em medida agregada") — porque "o valor" de um conjunto de linhas é ambíguo.


Contexto de filtro#

É o conjunto de linhas visível no momento do cálculo, definido por tudo que recorta a tela: o valor do eixo/legenda do visual, os slicers, o drill, o cross-filter. A mesma medida dá números diferentes em cada célula porque cada célula tem um contexto de filtro diferente.

Receita = SOMA(vendas.valor) numa matriz por produtos.categoria × mês: cada célula soma apenas as vendas daquela categoria naquele mês — não porque a fórmula mudou, mas porque o contexto de filtro daquela célula é diferente.

Nota

Regra de ouro: você quase nunca "passa" o filtro para a medida. O visual e os slicers já criam o contexto; a medida só soma o que está visível. Modificar o contexto é a exceção, e é para isso que existe o CALCULAR.


Modificando o contexto: CALCULAR#

CALCULAR é a função que altera o contexto de filtro de uma medida. Ela pega a medida base e aplica (ou remove) recortes:

  • CALCULAR([Receita]; produtos.categoria = "Bebidas") — força só Bebidas, ignorando o que estiver selecionado naquela dimensão.
  • CALCULAR([Receita]; TUDO(produtos)) — remove o filtro de produtos, útil para calcular "participação no total": [Receita] / CALCULAR([Receita]; TUDO(produtos)).
  • REMOVER_FILTROS, FILTRAR, TUDO e os modificadores compõem entre si com precedência determinística — a mesma composição sempre gera o mesmo número (garantido pelo conjunto de testes de referência).

Transição de contexto (o pulo do gato)#

Quando você usa uma medida dentro de um iterador (que roda em contexto de linha), acontece a transição de contexto: a linha atual vira um filtro, e a medida passa a ser avaliada como se aquela linha fosse o recorte.

Exemplo: SOMAX(produtos; [Receita]) percorre cada produto (contexto de linha) e, para cada um, avalia [Receita] filtrada por aquele produto (transição), depois soma tudo. É o que permite "receita do melhor mês de cada produto" e cálculos que a soma direta não faz.

Iteradores comuns: SOMAX, MEDIAX, CLASSIFICAR, PRIMEIROS_N. Todos avaliam a expressão por linha da tabela que recebem.


Inteligência de tempo é contexto de filtro sobre datas#

Funções como ACUM_ANO (YTD), MESMO_PERIODO_ANO_ANTERIOR e DESLOCAR_PERIODO não são mágica: elas reescrevem o contexto de filtro de datas. ACUM_ANO troca "este mês" por "de 1º de janeiro até o fim deste mês". Por isso elas exigem uma dimensão calendário ligada ao fato — ver Tutorial: tabela calendário e Medidas e comparações temporais.


Erros comuns#

  • Somar uma coluna calculada de linha achando que é medida. Coluna calculada é linha a linha; para o total, envolva numa agregação (SOMA(...)).
  • Esperar que um slicer "entre" na medida sozinho quando você usou TUDO. Se a medida remove o filtro com TUDO/REMOVER_FILTROS, o slicer daquela dimensão deixa de recortá-la — é o comportamento pedido, mas surpreende quem esqueceu.
  • Usar medida dentro de iterador sem querer transição. Lembre que [Medida] dentro de SOMAX é avaliada por linha, não sobre o conjunto todo.

Limites e ressalvas#

  • É um DAX-like genuíno (contexto de filtro real), mas não é DAX completo: não há tabelas virtuais no motor, e a relação vive no SQL. Não afirmamos paridade total com DAX.
  • Divisão por zero → VAZIO; DATA − DATA dá erro didático pedindo DATADIF.
  • A prova é do motor; a execução no datalake é NÃO MEDIDO.

Relacionados#


Última revisão: 2026-09-08.

Enlaces relacionados