Operadores aritméticos, de comparação, texto e lógicos em DAX, com exemplo, precedência, conversão de tipos e tratamento de BLANK.
19 operadores
Aritmético
Adição+
Soma dois valores. Tenta converter texto em número ("3" + 1 = 4). BLANK conta como zero (BLANK() + 5 = 5), mas BLANK() + BLANK() = BLANK.
Exemplo: [Receita] + [Frete]
Divisão/
Divide dois valores. Não dá erro quando o divisor é 0 ou BLANK: retorna Infinity ou NaN (5 / BLANK() = Infinity, 0 / BLANK() = NaN). Se o divisor pode ser 0 ou BLANK, use DIVIDE(); se é constante, / é mais rápido.
Exemplo: [Receita] / 1000
Exponenciação^
Eleva um número à potência de outro. É o operador de maior precedência: -2^2 dá -4, porque a potência vem antes do sinal.
Exemplo: 16 ^ 4 -- 65536
Multiplicação*
Multiplica dois valores. Texto com número é convertido em número. Com BLANK, o resultado é BLANK (BLANK() * 5 = BLANK).
Exemplo: [Quantidade] * [Preço Unitário]
Sinal negativo-
Unário: inverte o sinal de um número. Vem depois da potência: -2^2 dá -4; use (-2)^2 para obter 4.
Exemplo: -[Desconto]
Sinal positivo+
Unário: não muda o tipo nem o valor e é simplesmente ignorado. Aceita qualquer tipo de argumento.
Exemplo: +5 -- 5
Subtração-
Subtrai um valor de outro. Tenta converter texto em número, como a adição.
Exemplo: [Receita] - [Custo]
Comparação
Diferente de<>
Verdadeiro quando os valores são diferentes. Trata BLANK como 0, "" ou FALSE: [Coluna] <> 0 é falso quando a coluna está em branco.
Exemplo: [Região] <> "Sul"
Estritamente igual a==
Igualdade estrita: único comparador que não trata BLANK como 0. [Coluna] == 0 só é verdadeiro quando o valor é exatamente 0.
Exemplo: [Quantidade] == 0
Igual a=
Verdadeiro quando os valores são iguais. Como todo comparador exceto ==, trata BLANK como 0, "", FALSE ou DATE(1899,12,30): [Coluna] = 0 também é verdadeiro quando a coluna está em branco.
Exemplo: [Região] = "Sul"
Maior ou igual a>=
Verdadeiro quando o valor à esquerda é maior ou igual. Trata BLANK como 0.
Exemplo: [Valor] >= 20000
Maior que>
Verdadeiro quando o valor à esquerda é maior. Trata BLANK como 0. Texto com número: a Microsoft documenta erro em "1" > 0 numa página e resultado verdadeiro em "12" > 12 em outra — converta os tipos antes de comparar.
Exemplo: [Data da Venda] > DATE(2026, 1, 1)
Menor ou igual a<=
Verdadeiro quando o valor à esquerda é menor ou igual. Trata BLANK como 0.
Exemplo: [Valor] <= 100
Menor que<
Verdadeiro quando o valor à esquerda é menor. Trata BLANK como 0. Número, data, moeda e BLANK são comparáveis entre si; texto só com texto.
Exemplo: [Valor] < 100
Lógico
E lógico (AND)&&
Verdadeiro só quando as duas condições são verdadeiras. Equivale à função AND(), mas aceita mais de duas condições em sequência. TRUE && BLANK() = FALSE.
Exemplo: [Região] = "Sul" && [Canal] = "Loja"
Negação lógicaNOT
Inverte um valor lógico. É o último na ordem de precedência oficial, depois de todos os comparadores: NOT [A] = [B] compara primeiro e depois inverte. Na dúvida, use parênteses.
Exemplo: NOT ( [Região] = "Sul" )
OU lógico (OR)||
Verdadeiro quando pelo menos uma condição é verdadeira. Equivale à função OR(), mas aceita mais de duas condições em sequência. A Microsoft não documenta a precedência entre && e ||: use parênteses ao misturar os dois.
Verdadeiro quando o valor está na tabela à direita, normalmente um construtor de tabela entre chaves. Substitui uma série de ||. Tem a mesma precedência dos comparadores.
Exemplo: 'Produto'[Cor] IN { "Vermelho", "Azul", "Preto" }
Texto
Concatenação de texto&
Junta dois valores num texto. Número e data são convertidos em texto; use FORMAT() para controlar o formato.
Exemplo: [Cidade] & ", " & [Estado]
Regras que valem para todos os operadores
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
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
⚠️ && 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.
[Quantidade]=0-- verdadeiro para 0 E para BLANK[Quantidade]==0-- verdadeiro só para 0ISBLANK([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.
MargemBruta%=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.