Usar operadores DAX

Concluído

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.