fx

DAX

Operadores DAX

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.

    Exemplo: ( [Região] = "Sul" ) || ( [Região] = "Norte" )

  • Pertence à lista (IN)IN

    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.

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
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çã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.

[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.

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