Variáveis em DAX: medidas mais legíveis e mais rápidas
Introduzidas no DAX 2015, as variáveis (VAR/RETURN) são talvez a adição mais impactante à linguagem. Permitem dar nomes a sub-expressões, tornando o código mais legível e potencialmente mais rápido.
Sintaxe
Medida =
VAR vVendas = SUM(fVendas[Receita])
VAR vCusto = SUM(fVendas[Custo])
VAR vMargem = vVendas - vCusto
RETURN
DIVIDE(vMargem, vVendas)
Benefícios de legibilidade
Compare com a versão sem variáveis:
-- Sem variáveis (difícil de ler e manter)
Margem % = DIVIDE(
SUM(fVendas[Receita]) - SUM(fVendas[Custo]),
SUM(fVendas[Receita])
)
Com variáveis, cada parte tem um nome semântico. Outros membros da equipa (ou você daqui a 6 meses) percebem imediatamente a intenção.
Benefícios de performance
Uma variável é avaliada uma única vez no contexto de filtro em que é declarada. Se a mesma sub-expressão aparece três vezes na medida, sem variáveis é avaliada três vezes; com variáveis, é avaliada uma vez e o resultado reutilizado.
Variáveis para debugging
Debug Medida =
VAR vBase = CALCULATE(SUM(fVendas[Receita]), REMOVEFILTERS())
VAR vFiltro = SUM(fVendas[Receita])
RETURN
"Base: " & vBase & " | Filtrado: " & vFiltro
Mude o RETURN para revelar valores intermédios durante o desenvolvimento, sem alterar a lógica final.
Limitação importante
Uma variável captura o contexto de filtro no momento da sua declaração. Se o contexto mudar depois (e.g., dentro de um CALCULATE), a variável não é reavaliada. Este comportamento é intencional e consistente, mas importa conhecer.
Conclusão
Use VAR/RETURN em todas as medidas com mais de uma sub-expressão. O custo é zero e os ganhos em legibilidade e manutenção são enormes.