(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
DAX

CALCULATE em DAX: o motor de todas as medidas avançadas

João Barros 03 de December de 2024 2 min de leitura

CALCULATE é considerada a função mais poderosa e fundamental do DAX. Praticamente todas as medidas não-triviais dependem dela. A sua função é simples mas o seu impacto é profundo: avaliar uma expressão num contexto de filtro modificado.

Sintaxe

CALCULATE(
    <Expressão>,
    <Filtro1>,
    <Filtro2>,
    ...
)

Exemplo básico

Vendas Lisboa = CALCULATE(
    SUM(fVendas[Receita]),
    dRegiao[Cidade] = "Lisboa"
)

Mesmo que o relatório esteja filtrado por outra cidade, esta medida sempre mostra as vendas de Lisboa.

CALCULATE com REMOVEFILTERS

% do Total = DIVIDE(
    SUM(fVendas[Receita]),
    CALCULATE(SUM(fVendas[Receita]), REMOVEFILTERS(dRegiao))
)

O REMOVEFILTERS remove o filtro da dimensão de região, permitindo calcular a percentagem sobre o total independentemente do filtro aplicado no visual.

CALCULATE com ALL, ALLEXCEPT, ALLSELECTED

  • ALL(tabela) — remove todos os filtros da tabela.
  • ALLEXCEPT(tabela, coluna) — remove todos os filtros excepto o da coluna especificada.
  • ALLSELECTED() — remove filtros internos mas preserva os do utilizador (slicers/cross-filter).

CALCULATE e context transition

Quando CALCULATE é chamado dentro de um iterador (como SUMX), converte o contexto de linha em contexto de filtro — cada linha da iteração filtra a tabela antes de avaliar a expressão.

Conclusão

CALCULATE não é apenas uma função — é o mecanismo pelo qual o DAX manipula o contexto de avaliação. Dominá-la abre a porta a medidas de time intelligence, análises comparativas, rankings dinâmicos e muito mais.

Partilhar: