Referência · DAX (Power BI)
DAX: IF, SWITCH e o padrão SWITCH(TRUE())
O IF escolhe entre dois valores; o SWITCH escolhe entre vários. Os dois têm detalhes que costumam gerar bugs, como o resultado vazio quando falta o valor de falso. Os exemplos abaixo foram executados no Power BI Desktop.
Cada resultado desta página foi obtido executando a expressão no motor do Power BI Desktop (Analysis Services 17.0.57.16), em um Windows em português do Brasil. Um teste automático do Me Ajuda Flow confere que o texto da página é idêntico ao valor registrado. As expressões usam a sintaxe padrão do DAX (vírgula entre argumentos e ponto decimal); o editor do Power BI Desktop pode mostrar os separadores da configuração regional do Windows.
Exemplos executados
| Expressão | Resultado | Observação |
|---|---|---|
IF(1 > 2, "a", "b") | "b" | |
IF(1 > 2, "a") | BLANK() | Sem o terceiro argumento, a condição falsa devolve BLANK. |
SWITCH(2, 1, "um", 2, "dois", "outro") | "dois" | SWITCH compara o valor e devolve o resultado do primeiro caso igual; o último argumento é o padrão. |
SWITCH(TRUE(), 5 > 10, "x", 5 > 3, "y", "z") | "y" | SWITCH(TRUE(), ...) testa condições em ordem e devolve a primeira verdadeira. |
Pegadinhas
- IF sem o valor de falso devolve BLANK. Em visuais, isso pode sumir da linha em vez de mostrar uma resposta.
- A ordem importa no SWITCH(TRUE()). Ele devolve o primeiro caso verdadeiro. Coloque as condições mais específicas antes.
- Sempre inclua o valor padrão no SWITCH. Sem ele, um valor que não bate com nenhum caso devolve BLANK.
- No Power Automate, a função if tem a mesma ideia, mas não existe um SWITCH de expressão: o equivalente é uma ação Alternar ou ifs aninhados.
Quando usar
- IF para uma condição simples; SWITCH para faixas e categorias.
- SWITCH(TRUE()) para classificar um valor em faixas, como notas ou tamanhos.
Perguntas frequentes
SWITCH(TRUE()) é mais lento que IFs aninhados?
Ele costuma ser bem mais legível. Se o modelo for grande, confira o desempenho no seu caso.
Posso usar SWITCH com texto?
Pode. O primeiro argumento pode ser qualquer valor, e cada caso é comparado com ele.