← Voltar ao blog
DAXPower BIDesempenho

Como usar SWITCH e VAR para deixar suas medidas DAX mais legíveis e eficientes no Power BI

Dois recursos, dois papéis: o SWITCH(TRUE()) deixa a medida mais legível, e a variável (VAR) evita calcular a mesma medida várias vezes. Veja dois exemplos antes e depois.

MA
Allen87Data Engineer
· 2 min de leitura
Painel de código DAX com SWITCH e VAR sobre fundo escuro com detalhes em laranja

Criar medidas eficientes em DAX é essencial para garantir que os relatórios tenham sua performance otimizada. Duas boas práticas ajudam muito nisso: o uso de VAR e o uso do SWITCH, cada um com um papel diferente.

O SWITCH é usado para simplificar expressões condicionais que precisam retornar diferentes valores com base em várias condições.

Considere a seguinte medida DAX, que avalia o desempenho de uma medida chamada [Variance]:

Variance KPI = IF([Variance] > 0.80, "Amazing!", IF([Variance] > 0.60, "Good", "Bad"))

Embora funcione corretamente, é possível notar que há alguns IFs encadeados e a medida [Variance] é chamada mais de uma vez nesta expressão.

Isso aumenta o processamento desnecessário, principalmente em modelos com grandes volumes de dados. Esta fórmula pode ser mais eficiente — e também mais legível.

A solução com SWITCH e VAR

Reestruturando a medida com SWITCH(TRUE()) e uma variável intermediária, temos a versão otimizada:

VAR Calc = [Variance]

RETURN
SWITCH
(
    TRUE(),
    Calc > 0.80, "Amazing!",
    Calc > 0.60, "Good",
    "Bad"
)

A variável Calc armazena o valor de [Variance] uma única vez, e isso elimina a necessidade de novas chamadas a esta medida.

Cada recurso tem o seu papel:

  • VAR → desempenho: o valor é calculado uma única vez e reaproveitado. É daqui que vem o ganho de performance.
  • SWITCH(TRUE()) → legibilidade: sozinho, o SWITCH não é mais rápido que IFs encadeados. O que ele traz é um código mais limpo: as condições ficam alinhadas, na ordem em que são avaliadas, e fáceis de ler, entender e manter no futuro.

Mais um exemplo: classificando o atingimento de meta

Veja uma medida que classifica o resultado de vendas em relação a uma meta. Na versão com IFs encadeados, tanto [Total Vendas] quanto [Meta] são chamadas várias vezes, e a lógica fica escondida entre parênteses:

Status da Meta =
IF([Total Vendas] >= [Meta] * 1.2, "Superou",
    IF([Total Vendas] >= [Meta], "Atingiu",
        IF([Total Vendas] >= [Meta] * 0.8, "Quase lá", "Abaixo")))

Reescrevendo com VAR e SWITCH(TRUE()):

Status da Meta =
VAR VendasAtuais = [Total Vendas]
VAR MetaAtual = [Meta]
RETURN
SWITCH(
    TRUE(),
    VendasAtuais >= MetaAtual * 1.2, "Superou",
    VendasAtuais >= MetaAtual, "Atingiu",
    VendasAtuais >= MetaAtual * 0.8, "Quase lá",
    "Abaixo"
)

O que mudou:

  • Desempenho (VAR): cada medida é calculada uma única vez, em vez de três chamadas de [Total Vendas] e três de [Meta] na versão anterior.
  • Legibilidade (SWITCH): as quatro faixas aparecem uma embaixo da outra, e para mudar uma regra basta editar uma linha.
  • A ordem importa: o SWITCH(TRUE()) devolve o resultado da primeira condição verdadeira, então as faixas devem ir da mais restrita para a mais ampla (de >= MetaAtual * 1.2 até >= MetaAtual * 0.8).

Boas práticas com SWITCH e variáveis no DAX

  • Priorize o uso de variáveis: Sempre que possível, armazene os valores em variáveis para evitar cálculos repetitivos. É daqui que vem o ganho de desempenho.
  • Troque múltiplos IFs por SWITCH(TRUE()): Isso deixa o código mais legível, organizado e fácil de manter.
  • Teste suas medidas: Em modelos grandes, simples mudanças podem gerar significativos ganhos em eficiência. Compare antes e depois com o Performance Analyzer do Power BI Desktop.

📚 Este artigo teve como base uma questão do simulado da Microsoft da prova DP-600.

MA
Allen87 Data Engineer & Data Analyst

Escrevo sobre Power BI, engenharia de dados e IA aplicada. Veja o perfil completo, os 66 dashboards Power BI publicados e o GitHub.