Usar operadores DAX
Suas fórmulas DAX podem usar operadores para criar expressões que executam cálculos aritméticos, comparam valores, trabalham com cadeias de caracteres ou testam condições.
Dica
Muitos operadores DAX e ordem de precedência são iguais aos encontrados no Excel.
Operadores aritméticos
A tabela a seguir lista os operadores aritméticos.
Operador | Descrição |
---|---|
+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
^ | Exponenciação |
Lembre-se de que, quando você estiver dividindo duas expressões e quando o denominador puder retornar zero ou BLANK, será mais eficiente e mais seguro usar a função DAX DIVIDE
.
Operadores de comparação
A tabela a seguir lista os operadores de comparação, que são usados para comparar dois valores. O resultado é TRUE ou FALSE.
Operador | Descrição |
---|---|
= | Igual a |
== | Estrito igual a |
> | Maior que |
< | Menor que |
>= | Maior ou igual a |
<= | Menor ou igual a |
<> | Não igual a |
Todos os operadores de comparação, exceto estrito igual a (==), tratam BLANK como igual ao número zero, uma cadeia de caracteres vazia (""), a data 30 de dezembro de 1899 ou FALSE. Isso significa que a expressão [Revenue] = 0
será TRUE quando o valor de [Revenue]
for zero ou BLANK. Por outro lado, [Revenue] == 0
será TRUE somente quando o valor de [Revenue]
for zero.
Operador de concatenação de texto
Use o caractere de e comercial (&) para conectar ou concatenar dois valores de texto para produzir um valor de texto contínuo. Por exemplo, considere a seguinte definição de coluna calculada:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Operadores lógicos
Use operadores lógicos para combinar expressões que geram um único resultado. A tabela a seguir lista todos os operadores lógicos.
Operador | Descrição |
---|---|
&& | Cria uma condição AND entre duas expressões em que cada uma tem um resultado booliano. Se ambas as expressões retornarem TRUE, a combinação das expressões também retornará TRUE; caso contrário, a combinação retornará FALSE. |
|| (pipe duplo) | Cria uma condição OR entre duas expressões lógicas. Se uma das expressões retornar TRUE, o resultado será TRUE; somente quando as duas expressões são FALSE o resultado é FALSE. |
IN | Cria uma condição OR lógica entre cada linha que está sendo comparada a uma tabela. Observação: a sintaxe do construtor de tabela usa chaves. |
NOT | Inverte o estado de uma expressão booliana (FALSE para TRUE e vice-versa). |
Um exemplo que usa o operador lógico IN
é a definição de medida de ANZ Revenue, que usa a função DAX CALCULATE
para impor um filtro específico de dois países: Austrália e Nova Zelândia.
Observação
Você será apresentado à poderosa função CALCULATE
quando aprender a modificar o contexto do filtro.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Precedência do operador
Quando a fórmula DAX inclui vários operadores, o DAX usa regras para determinar a ordem de avaliação, que é conhecida como precedência de operador. As operações são ordenadas de acordo com a tabela a seguir.
Operador | Descrição |
---|---|
^ | Exponenciação |
- | Sinal (como em -1) |
* e / | Multiplicação e divisão |
NOT | NOT |
+ e - | Adição e subtração |
& | Concatenação de duas cadeias de caracteres de texto |
=,==,<,>,<=,>=,<> | Comparação |
Quando os operadores tiverem valor de precedência igual, eles serão ordenados da esquerda para a direita.
Em geral, a precedência de operador é a mesma que a encontrada no Excel. Se você precisar substituir a ordem de avaliação, agrupe as operações entre parênteses.
Por exemplo, considere a seguinte definição de coluna calculada:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Este exemplo de definição de coluna calculada produz um resultado incorreto porque a multiplicação ocorre antes da subtração. A definição de coluna calculada correta a seguir usa parênteses para garantir que as subtrações ocorram antes das multiplicações.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Dica
Lembrar-se das regras de precedência do operador pode ser um desafio, especialmente para iniciantes em DAX. Assim, recomendamos que você teste suas fórmulas por completo. Quando as fórmulas não produzem o resultado correto devido a uma ordem de avaliação incorreta, você pode experimentar adicionando parênteses para ajustar a ordem de avaliação. Você também pode adicionar parênteses para melhorar a legibilidade das fórmulas.
Para obter mais informações sobre operadores DAX e ordem de precedência, confira Operadores DAX.
Conversão implícita
Ao escrever uma fórmula DAX que usa operadores para combinar tipos de dados diferentes, você não precisa converter tipos explicitamente. Normalmente, o DAX identifica automaticamente os tipos de dados de objetos de modelo referenciados e executa conversões implícitas, quando necessário, para concluir a operação especificada.
No entanto, pode haver algumas limitações nos valores que podem ser convertidos com êxito. Se um valor ou uma coluna tem um tipo de dados que é incompatível com a operação atual, a DAX retorna um erro. Por exemplo, a tentativa de multiplicar um valor de data criará um erro, pois ele não é lógico.
BLANK é tratado de modo diferente de acordo com o operador usado. Ela é tratada de modo semelhante a como o Excel trata BLANK, mas de modo diferente de como os bancos de dados (SQL) tratam NULL. BLANK é tratado como zero quando aplicado por operadores aritméticos e como uma cadeia de caracteres vazia quando concatenado a uma cadeia de caracteres.
Dica
Lembrar-se de como BLANK é tratado pode ser desafiador, especialmente para iniciantes em DAX. Assim, recomendamos que você teste suas fórmulas por completo. Quando BLANKs criam resultados inesperados, considere usar as funções DAX IF
e ISBLANK
para testar o BLANK e, em seguida, responder de maneira apropriada.