Regras que valem para todos os operadores

DAX

1. Ordem de precedência

Do primeiro ao último a ser calculado. No mesmo nível, da esquerda para a direita.

OrdemOperadorDescrição
1^Potência
2- (unário)Sinal
3* /Multiplicação e divisão
4+ -Adição e subtração
5&Concatenação de texto
6= == < > <= >= <> INComparação
7NOTNegação
DAX
5 + 2 * 3      -- 11: multiplica antes de somar
( 5 + 2 ) * 3  -- 21
-2 ^ 2         -- -4: a potência vem antes do sinal
( -2 ) ^ 2     -- 4

Atenção && e || não aparecem na tabela oficial de precedência. Ao misturar os dois — ou ao combiná-los com NOT — use parênteses.

2. Conversão de tipos

SituaçãoO que acontece
+ - * / com tipos diferentesOs dois lados viram o maior tipo numérico comum. Texto numérico vira número: "3" + 1 = 4
& com número ou dataO valor vira texto. Use FORMAT() para escolher o formato
ComparaçãoSó compara número com número, lógico com lógico e texto com texto. Inteiro, decimal, moeda, data/hora e BLANK contam como número
Comparação de texto com númeroA referência de operadores diz que dá erro ("1" > 0 → "DAX comparison operations do not support comparing values of type Text with values of type Integer"); a página de tipos de dados diz que "12" > 12 é verdadeiro. Converta com VALUE() ou FORMAT() antes de comparar — veja Tipos de dados

3. BLANK nas contas e comparações

ExpressãoResultado
BLANK() + BLANK()BLANK
BLANK() + 55
BLANK() * 5BLANK
5 / BLANK()Infinity
0 / BLANK()NaN
BLANK() / BLANK()BLANK
TRUE && BLANK()FALSE
TRUE || BLANK()TRUE
BLANK() && BLANK()BLANK

Comparação: todos os comparadores, menos ==, tratam BLANK como 0, "", FALSE ou DATE(1899, 12, 30), conforme o outro lado.

DAX
[Quantidade] = 0    -- verdadeiro para 0 E para BLANK
[Quantidade] == 0   -- verdadeiro só para 0
ISBLANK ( [Quantidade] )  -- verdadeiro só para BLANK

Divisão: / não dá erro com divisor 0 ou BLANK — devolve Infinity ou NaN, que aparecem no visual e contaminam totais. Use DIVIDE() quando o divisor pode ser 0 ou BLANK; com divisor constante (/ 1000), / é mais rápido.

DAX
Margem Bruta % =
DIVIDE ( [Total de Vendas] - [Custo Total], [Total de Vendas] )

4. Vindo do Excel

  • O DAX não tem o operador % nem intervalos (A1:B10).
  • BLANK() * 5 dá BLANK no DAX e 0 no Excel; 5 / BLANK() dá Infinity no DAX e erro no Excel.
  • && e || substituem E() e OU() dentro da fórmula; as funções AND() e OR() também existem, mas aceitam só dois argumentos.
  • Ao colar fórmula do Excel, revise operadores e use parênteses sempre que a ordem puder gerar dúvida.

Fontes

Conhecer a trilha Power BI ao vivo