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:
- Sobre quais linhas? — isso é o contexto de filtro.
- 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 devendas, o motor conhece ovalore ocustodaquela 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.
Note
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,TUDOe 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 comTUDO/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 deSOMAXé 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 − DATAdá erro didático pedindoDATADIF. - A prova é do motor; a execução no datalake é
NÃO MEDIDO.
Relacionados#
- Medidas, fórmulas e KPIs
- Catálogo de fórmulas
- Conceitos de modelagem dimensional
- Tutorial: medidas e comparações temporais
Última revisão: 2026-09-08.