Utilizar operadores DAX

Concluído

As fórmulas DAX podem utilizar operadores para criar expressões que executam cálculos aritméticos, comparam valores, trabalham 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 for [Revenue] 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 da 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.

O 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 e ISBLANK DAX para testar em BLANK e, em seguida, responder de forma adequada.