Utilizar operadores DAX
As fórmulas DAX podem utilizar operadores para criar expressões que executam cálculos aritméticos, comparam valores, funcionam com cadeias ou condições de teste.
Dica
Muitos operadores DAX e ordem de precedência são idênticos aos encontrados no Excel.
Operadores aritméticos
A seguinte tabela lista os operadores aritméticos.
Operador | Descrição |
---|---|
+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
^ | Exponenciação |
Lembre-se de que, quando está a dividir duas expressões e quando o denominador pode devolver zero ou BLANK, é mais eficiente e seguro utilizar a DIVIDE
função DAX.
Operadores de comparação
A seguinte tabela lista os operadores de comparação, que são utilizados para comparar dois valores. O resultado é VERDADEIRO ou FALSO.
Operador | Descrição |
---|---|
= | Igual a |
== | Estritamente igual a |
> | Maior que |
< | Menor que |
>= | Maior ou igual a |
<= | Menor que ou igual a |
<> | Não é igual a |
Todos os operadores de comparação, exceto estritamente igual a (==), tratam BLANK como igual ao número zero, a uma cadeia de caracteres vazia (“”), à data de 30 de dezembro de 1899 ou a FALSO, Significa que a expressão [Revenue] = 0
será VERDADEIRO quando o valor de [Revenue]
for zero ou BLANK. Por outro lado, [Revenue] == 0
é VERDADEIRO apenas quando o valor de [Revenue]
é zero.
Operador de concatenação de texto
Utilize o carater de e comercial (&) para ligar, ou concatenar, dois valores de texto para produzir um valor de texto contínuo. Por exemplo, considere a seguinte definição da coluna calculada:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Operadores lógicos
Utilize operadores lógicos para combinar expressões que produzem um único resultado. A seguinte tabela 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 Booleano. Se ambas as expressões devolverem VERDADEIRO, a combinação das expressões também devolverá VERDADEIRO. Caso contrário, a combinação devolverá FALSO. |
|| (pipe duplo) | Cria uma condição OR entre duas expressões lógicas. Se uma das expressões devolver TRUE, o resultado será TRUE; apenas quando as duas expressões são FALSE é que o resultado é FALSE. |
IN | Cria uma condição lógica OR entre cada linha que está a ser comparada a uma tabela. Nota: a sintaxe do construtor de tabela utiliza chavetas. |
NOT | Inverte o estado de uma Expressão booleana (FALSO para VERDADEIRO e vice-versa). |
Um exemplo que utiliza o IN
operador lógico é a definição de medida Receita ANZ , que utiliza a CALCULATE
função DAX para impor um filtro específico de dois países: Austrália e Nova Zelândia.
Nota
Será apresentado à função avançada CALCULATE
quando aprender a modificar o contexto de filtro.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Precedência dos operadores
Quando a fórmula DAX inclui vários operadores, o DAX utiliza regras para determinar a sequência de ordenação, o que é conhecido como precedência dos operadores. As operações são ordenadas de acordo com a seguinte tabela.
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 texto |
=,=,,<,><=,>=,<> | Comparação |
Quando os operadores têm um valor de precedência igual, são ordenados da esquerda para a direita.
No geral, a precedência dos operadores é a mesma que a que pode encontrar no Excel. Se precisar de substituir a sequência de ordenaçã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]
Esta definição de coluna calculada de exemplo produz um resultado incorreto, porque a multiplicação ocorre antes da subtração. A seguinte definição de coluna calculada correta utiliza os parênteses para garantir que as subtrações ocorrem 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 dos operadores pode ser um desafio, especialmente para principiantes no DAX. Consequentemente, recomendamos que teste as fórmulas cuidadosamente. Quando as fórmulas não produzem o resultado correto devido a uma sequência de ordenação incorreta, pode experimentar adicionar parênteses para ajustar a sequência de ordenação. Também pode adicionar parênteses para melhorar a legibilidade das fórmulas.
Para obter mais informações sobre os operadores DAX e a ordem de precedência, veja Operadores DAX.
Conversão implícita
Ao escrever uma fórmula DAX que utiliza operadores para combinar tipos de dados diferentes, não é necessário converter os tipos explicitamente. Normalmente, o DAX identifica automaticamente os tipos de dados de objetos do modelo referenciados e executa as conversões implícitas, quando necessário, para concluir a operação especificada.
No entanto, podem existir algumas limitações aos valores que podem ser convertidos com sucesso. Se um valor ou uma coluna tiver um tipo de dados incompatível com a operação atual, o DAX devolverá um erro. Por exemplo, a tentativa de multiplicar um valor de data gerará um erro, pois não é lógico.
BLANK é processado de forma diferente, consoante o operador utilizado. É tratada de forma semelhante à forma como o Excel trata BLANK, mas de modo diferente à forma como as bases de dados (SQL) tratam NULL. BLANK é tratado como zero quando acionado por operadores aritméticos e com uma cadeia vazia quando concatenado a uma cadeia.
Dica
Lembrar-se como BLANK é processado pode ser um desafio, especialmente para principiantes no DAX. Consequentemente, recomendamos que teste as fórmulas cuidadosamente. Quando os BLANKs criam resultados inesperados, considere utilizar as IF
funções DAX e ISBLANK
para testar em BRANCO e, em seguida, responder de forma adequada.