Como usar a função SWITCH em DAX: passo a passo
A função SWITCH em DAX permite substituir vários IF encadeados por uma expressão limpa e fácil de ler. É ideal para transformar códigos em etiquetas, criar categorias personalizadas ou classificar valores por escalões, tudo numa única medida ou coluna calculada. A seguir, vês dois padrões práticos de SWITCH em DAX que resolvem a maioria dos casos do dia a dia.
Pré-requisitos
- O Power BI Desktop instalado (ou acesso ao Power BI Service).
- Um modelo com pelo menos uma tabela de dados carregada.
- Noções básicas de medidas e colunas calculadas em DAX.
- Uma coluna com valores para categorizar — por exemplo, uma prioridade numérica ou um total de vendas.
Passo 1: Perceber a sintaxe de SWITCH
A função SWITCH avalia uma expressão e compara-a com uma lista de pares valor/resultado. Quando encontra o primeiro valor igual, devolve o resultado correspondente. O último argumento, opcional e sem par, funciona como valor por omissão (o else).
SWITCH(
<expressão>,
<valor1>, <resultado1>,
<valor2>, <resultado2>,
...
<valor por omissão> // opcional
)
Pensa nela como uma alternativa mais legível a escrever muitos IF uns dentro dos outros.
Passo 2: Criar uma coluna com SWITCH simples
Este primeiro exemplo de SWITCH em DAX transforma um código numérico numa etiqueta de texto. Imagina uma tabela Tarefas com a coluna Prioridade preenchida com 1, 2 ou 3. Cria uma nova coluna calculada:
Etiqueta Prioridade =
SWITCH(
Tarefas[Prioridade],
1, "Alta",
2, "Média",
3, "Baixa",
"Não definida"
)
Se Prioridade for 1, a coluna mostra "Alta"; se for 2, mostra "Média"; e assim por diante. Qualquer outro valor (como 4 ou um campo vazio) cai no valor por omissão "Não definida". É uma forma rápida de tornar dados técnicos legíveis para o utilizador final.
Passo 3: Usar SWITCH(TRUE()) para escalões
O SWITCH simples só compara valores exatos. Quando precisas de intervalos ou condições (maior que, menor que), usa o padrão SWITCH(TRUE()). Em vez de um valor, avalias condições lógicas de cima para baixo e devolves a primeira que for verdadeira. Cria esta medida:
Escalão de Vendas =
VAR TotalVendas = SUM( Vendas[Valor] )
RETURN
SWITCH(
TRUE(),
TotalVendas >= 100000, "Ouro",
TotalVendas >= 50000, "Prata",
TotalVendas >= 10000, "Bronze",
"Abaixo do mínimo"
)
Aqui a medida soma as vendas para a variável TotalVendas e depois classifica-a. A ordem é fundamental: como o SWITCH devolve a primeira condição verdadeira, as regras mais exigentes têm de vir primeiro. Um total de 120 000 é "Ouro", mesmo cumprindo também as regras seguintes.
Passo 4: Definir o valor por omissão e evitar erros comuns
Inclui sempre um valor por omissão no fim. Sem ele, as linhas que não correspondem a nenhuma condição devolvem BLANK(), o que costuma confundir quem lê o relatório. Há ainda dois erros frequentes a evitar:
- Misturar tipos de dados nos resultados (texto num caso, número noutro). Mantém todos os resultados do mesmo tipo.
- Tentar usar intervalos no SWITCH simples, como
SWITCH(Vendas[Valor], > 100, ...). Isso não funciona — para condições, usa sempre SWITCH(TRUE()).
Dica: no padrão SWITCH(TRUE()), coloca as condições mais restritivas no topo. A função para na primeira que for verdadeira.
Verificar o resultado
Para confirmar que ficou correto, arrasta a coluna Etiqueta Prioridade para um visual de tabela ao lado da coluna Prioridade e verifica se cada número mostra a etiqueta certa. Para a medida Escalão de Vendas, coloca-a num cartão ou numa matriz com uma dimensão (por exemplo, por região) e observa os escalões a mudar. Testa também um caso limite: uma prioridade 4 ou um valor de vendas muito baixo devem cair no valor por omissão que definiste.
Conclusão
Com estes dois padrões — SWITCH simples para mapear valores e SWITCH(TRUE()) para escalões — cobres a grande maioria das classificações que vais precisar em Power BI, com fórmulas muito mais legíveis do que uma cadeia de IF. A partir daqui, experimenta combinar o SWITCH com variáveis para lógica mais complexa ou usá-lo na formatação condicional de um visual. Qual foi o IF encadeado mais confuso que já escreveste — e como ficaria agora, muito mais limpo, com SWITCH?