Há uma medida no teu modelo que ninguém quer tocar. Tem três CALCULATE encaixados, repete a mesma expressão de vendas em quatro sítios e, quando a arrastas para um visual, o relatório hesita antes de desenhar. Quando alguém pergunta o que ela faz ao certo, a resposta honesta costuma ser: "funciona, não lhe mexas". Esse é o retrato de uma medida escrita sem variáveis.
As variáveis em DAX — declaradas com VAR e devolvidas com RETURN — são das ferramentas mais simples e mais subaproveitadas do Power BI. A ideia é elementar: calcular um valor (ou uma tabela) uma vez, dar-lhe um nome e reutilizá-lo as vezes que forem precisas. O efeito, esse, não é elementar de todo: medidas mais rápidas, mais fáceis de ler e muito menos dolorosas de corrigir quando alguma coisa corre mal.
Este guia mostra o que são as variáveis em DAX, porque melhoram o desempenho, como as usar bem e que armadilhas evitar. No final, ficas com um padrão que se aplica a quase qualquer medida do teu relatório — do cálculo de margem ao indicador mais rebuscado do painel.
O que é, afinal, uma variável em DAX
Uma variável guarda o resultado de uma expressão para que o possas usar mais à frente pelo nome. Declara-se com VAR, seguido de um nome e da expressão; o valor final da medida vem depois de RETURN. Uma medida pode ter várias declarações VAR, mas apenas um RETURN.

Um exemplo simples de margem percentual:
Margem % =
VAR Vendas = SUM ( Faturas[Total] )
VAR Custo = SUM ( Faturas[Custo] )
VAR Lucro = Vendas - Custo
RETURN
DIVIDE ( Lucro, Vendas )
Repara em como cada passo tem um nome. Não precisas de decifrar o que SUM ( Faturas[Total] ) significa três linhas abaixo: é Vendas. A expressão lê-se quase como uma frase, e é isso que torna as variáveis tão valiosas mesmo antes de falarmos de desempenho.
Porque tornam as medidas mais rápidas
A regra de ouro é esta: uma variável é avaliada uma só vez e o resultado fica guardado para todas as utilizações seguintes. Quando escreves SUM ( Faturas[Total] ) em três pontos de uma medida, estás a pedir ao motor que faça, potencialmente, esse cálculo três vezes. Ao guardá-lo numa variável, o trabalho é feito uma vez e reaproveitado.
Em modelos pequenos a diferença é impercetível. Em tabelas de milhões de linhas, ou em medidas que iteram com SUMX sobre o detalhe, evitar recálculos repetidos pode transformar um visual lento num visual instantâneo. As variáveis não são um truque de micro-otimização exótico: são, muitas vezes, a forma mais barata de acelerar um relatório.
Código mais legível: menos repetição, mais intenção
Legibilidade não é um luxo estético. Uma medida que se entende é uma medida que se consegue auditar, corrigir e fazer evoluir sem medo. As variáveis permitem partir um cálculo complexo em passos com nome, cada um a documentar a sua intenção.
Compara uma expressão encaixada, escrita numa só linha, com a versão por passos. A primeira obriga-te a ler de dentro para fora e a segurar valores intermédios na cabeça. A segunda diz-te, linha a linha, o que está a acontecer. Daqui a seis meses — ou quando for outra pessoa a abrir o ficheiro — essa clareza vale ouro.
Depurar medidas espreitando as variáveis
Há um truque de depuração que só por si justifica adotar variáveis. Quando uma medida devolve um resultado estranho, muda temporariamente o RETURN para devolver uma das variáveis intermédias em vez do resultado final:
Margem % =
VAR Vendas = SUM ( Faturas[Total] )
VAR Custo = SUM ( Faturas[Custo] )
VAR Lucro = Vendas - Custo
RETURN
Lucro
Colocas essa medida num cartão, confirmas se Lucro tem o valor esperado e, quando perceberes onde está o erro, voltas a pôr o RETURN original. Sem variáveis, terias de partir a fórmula em medidas avulsas só para inspecionar os passos. Com elas, o diagnóstico faz-se no próprio sítio.
Variáveis que guardam tabelas, não só números
Uma variável não tem de ser um número. Pode guardar uma tabela inteira — o resultado de um FILTER, por exemplo — e reutilizá-la à frente. Isto abre a porta a medidas mais expressivas sem repetir a lógica de filtragem:
Clientes Ativos Alto Valor =
VAR Selecao =
FILTER (
Clientes,
Clientes[Estado] = "Ativo" && Clientes[Valor] > 1000
)
RETURN
COUNTROWS ( Selecao )
A variável Selecao é uma tabela em memória. Podias contá-la, somá-la ou usá-la como filtro dentro de CALCULATE — tudo a partir da mesma definição, escrita uma vez.
A armadilha do contexto: onde a variável é avaliada
Aqui está o ponto que apanha quase toda a gente. Uma variável é avaliada no contexto onde é declarada, não onde é usada. Se declaras uma variável fora de um CALCULATE e depois a usas lá dentro, ela mantém o valor que tinha antes de o CALCULATE alterar o contexto de filtro.
Muitas vezes isto é exatamente o que queres — permite, por exemplo, comparar o valor atual com um valor "congelado" antes da alteração de contexto. Mas se esperavas que a variável "reagisse" ao novo filtro, vais obter um resultado que parece errado. Não é um bug do DAX; é a regra a funcionar. Quando algo não bate certo dentro de um CALCULATE, pergunta-te sempre em que contexto a variável foi realmente avaliada.
Erros comuns a evitar
- Nomes vagos.
Temp1,AuxouXdeitam fora metade da vantagem. Dá nomes que digam o que o valor representa:Vendas,Lucro,ClientesAtivos. - Esperar reação ao contexto alterado. Como vimos, uma variável não "vê" o filtro que um
CALCULATEaplica depois de ela ser declarada. - Querer devolver duas coisas. Só existe um
RETURN. Se precisas de dois resultados, ou fazes duas medidas, ou devolves uma tabela. - Declarar e não usar. Uma variável que nunca entra no
RETURNnem noutra variável é ruído — o motor pode ignorá-la, mas quem lê o código, não. - Assumir que as variáveis são partilhadas entre medidas. Cada medida tem o seu próprio escopo; um
VARchamadoVendasnuma medida nada tem a ver com outro de igual nome noutra.
Mini-caso: um painel de vendas que voltou a respirar
Uma empresa de distribuição B2B tinha um painel de vendas com cerca de trinta medidas. Várias repetiam o mesmo SUMX sobre a tabela de linhas de fatura — mais de dois milhões de registos — para calcular receita, margem e ticket médio. A página principal demorava perto de nove segundos a desenhar, e os analistas mais recentes evitavam alterar seja o que fosse com receio de partir alguma coisa.
A equipa reescreveu oito medidas críticas, movendo os cálculos repetidos para variáveis no início de cada fórmula. Não mudaram o modelo nem acrescentaram hardware. O tempo de abertura da página caiu para cerca de três segundos e, tão importante quanto isso, um analista júnior conseguiu perceber e ajustar as medidas sem precisar de ajuda. A legibilidade transformou uma zona intocável do relatório em código que a equipa passou a manter com confiança.
Na prática
Adota as variáveis por omissão, não como técnica avançada reservada a especialistas. Duas regras práticas resolvem quase tudo: se repetes uma expressão, transforma-a numa variável; se uma medida passa das três ou quatro linhas, provavelmente fica melhor com VAR. Dás nomes claros aos passos, avalias cada expressão uma só vez e ganhas, de borla, um método de depuração. É, no fundo, higiene básica de DAX — e das que mais rendem por minuto investido.