Se existe uma função no DAX que você precisa dominar para evoluir de verdade no Power BI, essa função é o CALCULATE. Ela é considerada a função mais poderosa e mais importante de toda a linguagem DAX, e praticamente todo cálculo avançado no Power BI passa por ela. Neste artigo iremos mostrar o que é o CALCULATE, como ele funciona e como usar nos seus relatórios.
O que é o CALCULATE?
O CALCULATE avalia uma expressão em um contexto de filtro modificado. Em outras palavras, ele permite que você execute um cálculo com filtros diferentes dos que estão sendo aplicados pelo visual ou pela página do relatório.
CALCULATE(expressão; filtro1; filtro2; ...)
Por que o CALCULATE é tão importante?
No Power BI, cada medida é calculada dentro de um contexto de filtro determinado pelos filtros da página, pelas segmentações e pelos elementos do visual. O CALCULATE permite modificar esse contexto para qualquer filtro que você desejar.
Exemplo básico: vendas de uma região específica
Para calcular o total de vendas apenas da região Sul, independente do que está filtrado no visual:
Vendas Sul = CALCULATE([Total de Vendas]; Tabela[Região] = "Sul")
CALCULATE com múltiplos filtros
Você pode passar vários filtros no CALCULATE, e todos serão aplicados simultaneamente:
Vendas Sul 2024 = CALCULATE(
[Total de Vendas];
Tabela[Região] = "Sul";
YEAR(Tabela[Data]) = 2024
)
CALCULATE com ALL: removendo filtros
A função ALL remove filtros de uma tabela ou coluna, permitindo calcular totais gerais independente dos filtros ativos:
% do Total = DIVIDE(
[Total de Vendas];
CALCULATE([Total de Vendas]; ALL(Vendas))
)
CALCULATE com FILTER
Para filtros mais complexos que não podem ser expressos como uma igualdade simples, use FILTER dentro do CALCULATE:
Vendas Acima Media = CALCULATE(
[Total de Vendas];
FILTER(Vendas; Vendas[Valor] > AVERAGE(Vendas[Valor]))
)
ALLEXCEPT: remover todos os filtros exceto um
% por Região = DIVIDE(
[Total de Vendas];
CALCULATE([Total de Vendas]; ALLEXCEPT(Vendas; Vendas[Região]))
)
CALCULATE com inteligência de tempo
Vendas Ano Anterior = CALCULATE(
[Total de Vendas];
SAMEPERIODLASTYEAR(Calendário[Data])
)
Contexto de linha versus contexto de filtro
Um conceito fundamental é que o CALCULATE converte o contexto de linha em contexto de filtro. Isso é o que permite usar medidas dentro de colunas calculadas e é um dos conceitos mais avançados do DAX. Entender essa conversão é o que separa os usuários intermediários dos avançados em DAX.
Se você curtiu esse artigo onde mostramos como dominar o CALCULATE no DAX do Power BI, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.