1. Ordem de precedência
Do primeiro ao último a ser calculado. No mesmo nível, da esquerda para a direita.
| Ordem | Operador | Descriçã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 | = == < > <= >= <> IN | Comparação |
| 7 | NOT | Negaçã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ção | O que acontece |
|---|---|
+ - * / com tipos diferentes | Os dois lados viram o maior tipo numérico comum. Texto numérico vira número: "3" + 1 = 4 |
& com número ou data | O valor vira texto. Use FORMAT() para escolher o formato |
| Comparação | Só 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úmero | A 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ão | Resultado |
|---|---|
BLANK() + BLANK() | BLANK |
BLANK() + 5 | 5 |
BLANK() * 5 | BLANK |
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() * 5dá BLANK no DAX e 0 no Excel;5 / BLANK()dá Infinity no DAX e erro no Excel.&&e||substituemE()eOU()dentro da fórmula; as funçõesAND()eOR()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.