Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A linguagem Data Analysis Expression (DAX) usa operadores para criar expressões que comparam valores, executam cálculos aritméticos ou trabalham com cadeias de caracteres.
Tipos de operadores
Existem quatro tipos diferentes de operadores de cálculo: aritmética, comparação, concatenação de texto e lógica.
Operadores aritméticos
Executar operações matemáticas básicas, tais como adição, subtração ou multiplicação; combinar números; e produzir resultados numéricos, use os seguintes operadores aritméticos.
Operador aritmético | Significado | Exemplo |
---|---|---|
+ (sinal de adição) |
Adição | 3+3 |
- (sinal de menos) |
Subtração ou sinal | 3-1-1 |
* (asterisco) |
Multiplicação | 3*3 |
/ (barra para a frente) |
Divisão | 3/3 |
^ (caret) |
Exponenciação | 16^4 |
Observação
O sinal de mais pode funcionar como um operador binário e como um operador unário . Um operador binário requer números em ambos os lados do operador e executa a adição. Quando você usa valores em uma DAX fórmula em ambos os lados do operador binário, DAX tenta converter os valores em tipos de dados numéricos se eles ainda não forem números. Em contraste, o operador unário pode ser aplicado a qualquer tipo de argumento. O símbolo de mais não afeta o tipo ou valor e é simplesmente ignorado, enquanto o operador menos cria um valor negativo, se aplicado a um valor numérico.
Operadores de comparação
Você pode comparar dois valores com os operadores a seguir. Quando dois valores são comparados usando esses operadores, o resultado é um valor lógico, TRUE
ou FALSE
.
Operador de comparação | Significado | Exemplo |
---|---|---|
= |
Igual a | [Região] = "EUA" |
== |
Estritamente igual a | [Região] == "EUA" |
> |
Maior que | [Data de venda] > "jan 2009" |
< |
Menos de | [Data de venda] < "1 de janeiro de 2009" |
>= |
Maior ou igual a | [Montante] >= 20000 |
<= |
Inferior ou igual a | [Montante] <= 100 |
<> |
Não é igual a | [Região] <> "EUA" |
Todos os operadores de comparação, exceto == tratam BLANK como igual ao número 0, string vazia "", DATE(1899, 12, 30), ou FALSE
. Como resultado, [Coluna] = 0 será verdadeiro quando o valor de [Coluna] for 0 ou BLANK. Em contraste, [Column] == 0 é verdadeiro apenas quando o valor de [Column] é 0.
Operador de concatenação de texto
Use o símbolo de e comercial (&
) para concatenar ou unir duas ou mais strings de texto e produzir uma sequência de texto única.
Operador de texto | Significado | Exemplo |
---|---|---|
& (E comercial) |
Conecta ou concatena dois valores para produzir um valor de texto contínuo | [Region] & ", " & [City] |
Operadores lógicos
Use operadores lógicos (&&
) e (||
) para combinar expressões para produzir um único resultado.
Operador de texto | Significado | Exemplos |
---|---|---|
&& (duplo til) |
Cria uma condição AND entre duas expressões que têm um resultado booleano. Se ambas as expressões retornarem TRUE , a combinação das expressões também retornará TRUE ; caso contrário, a combinação retorna FALSE . |
([Region] = "France") && ([BikeBuyer] = "yes")) |
|| (símbolo de tubo duplo) |
Cria uma condição OR entre duas expressões lógicas. Se uma das expressões retornar TRUE , o resultado será TRUE ; só quando ambas as expressões são FALSE é que o resultado FALSE . |
(([Region] = "France") || ([BikeBuyer] = "yes")) |
IN |
Cria uma condição lógica OR entre cada linha que é comparada a uma tabela. Nota: a sintaxe do construtor da tabela usa chaves encaracoladas. | 'Product'[Color] IN { "Red", "Blue", "Black" } |
Operadores e ordem de precedência
Em alguns casos, a ordem em que o cálculo é realizado pode afetar o valor de retorno; Portanto, é importante entender como a ordem é determinada e como você pode alterar a ordem para obter os resultados desejados.
Ordem de cálculo
Uma expressão avalia os operadores e valores em uma ordem específica. Todas as expressões começam sempre com um sinal de igual (=). O sinal de igual indica que os caracteres seguintes constituem uma expressão.
Seguindo o sinal de igual estão os elementos a serem calculados (os operandos), que são separados por operadores de cálculo. As expressões são sempre lidas da esquerda para a direita, mas a ordem em que os elementos são agrupados pode ser controlada até certo ponto usando parênteses.
Precedência do operador
Se você combinar vários operadores em uma única fórmula, as operações serão ordenadas de acordo com a tabela a seguir. Se os operadores tiverem igual valor de precedência, eles são ordenados da esquerda para a direita. Por exemplo, se uma expressão contém um operador de multiplicação e divisão, eles são avaliados na ordem em que aparecem na expressão, da esquerda para a direita.
Operador | Descrição |
---|---|
^ |
Exponenciação |
– |
Sinal (como –1) |
* e / |
Multiplicação e divisão |
+ e – |
Adição e subtração |
& |
Conecta duas cadeias de caracteres de texto (concatenação) |
=,==,<,>,<=,>=,<>,IN |
Comparação |
NOT |
NOT (operador unário) |
Usando parênteses para controlar a ordem de cálculo
Para alterar a ordem de avaliação, coloque entre parênteses a parte da fórmula que deve ser calculada primeiro. Por exemplo, a fórmula a seguir produz 11 porque a multiplicação é calculada antes da adição. A fórmula multiplica 2 por 3 e, em seguida, adiciona 5 ao resultado.
=5+2*3
Por outro lado, se você usar parênteses para alterar a sintaxe, a ordem será alterada para que 5 e 2 sejam adicionados e o resultado multiplicado por 3 para produzir 21.
=(5+2)*3
No exemplo a seguir, os parênteses em torno da primeira parte da fórmula forçam o cálculo a avaliar a expressão (3 + 0.25)
primeiro e, em seguida, dividem o resultado pelo resultado da expressão, (3 - 0.25)
.
=(3 + 0.25)/(3 - 0.25)
No exemplo a seguir, o operador de exponenciação é aplicado primeiro, de acordo com as regras de precedência para operadores, e, em seguida, o operador de sinal é aplicado. O resultado para esta expressão é -4.
=-2^2
Para garantir que o operador de sinal seja aplicado primeiro ao valor numérico, você pode usar parênteses para controlar operadores, conforme mostrado no exemplo a seguir. O resultado para esta expressão é 4.
= (-2)^2
Compatibilidade
DAX manipula e compara facilmente vários tipos de dados, muito parecido com o Microsoft Excel. No entanto, o mecanismo de computação subjacente é baseado no SQL Server Analysis Services e fornece recursos avançados adicionais de um armazenamento de dados relacional, incluindo suporte mais avançado para tipos de data e hora. Portanto, em alguns casos, os resultados dos cálculos ou o comportamento das funções podem não ser os mesmos do Excel. Além disso, DAX suporta mais tipos de dados do que o Excel. Esta seção descreve as principais diferenças.
Coerção dos tipos de dados dos operandos
Em geral, os dois operandos nos lados esquerdo e direito de qualquer operador devem ser do mesmo tipo de dados. No entanto, se os tipos de dados forem diferentes, DAX irá convertê-los em um tipo de dados comum para aplicar o operador em alguns casos:
- Ambos os operandos são convertidos para o maior tipo de dados comum possível.
- O operador é aplicado quando possível.
Por exemplo, suponha que você tenha dois números que deseja combinar. Um número resulta de uma fórmula, como =[Price] * .20
, e o resultado pode conter muitas casas decimais. O outro número é um inteiro que foi fornecido como um valor de cadeia de caracteres.
Neste caso, DAX irá converter ambos os números em números reais em um formato numérico, usando o maior formato numérico que pode armazenar ambos os tipos de números. Em seguida, DAX aplicará a multiplicação.
Dependendo da combinação de tipo de dados, a coerção de tipo pode não ser aplicada para operações de comparação. Para obter uma lista completa dos tipos de dados suportados pelo DAX, consulte Tipos de dados suportados em modelos tabulares e Tipos de dados no Power BI Desktop.
Inteiro, Número Real, Moeda, Data/hora e Branco são considerados numéricos para fins de comparação. Blank é avaliado como zero quando se realiza uma comparação. As seguintes combinações de tipo de dados são suportadas para operações de comparação.
Tipo de dados do lado esquerdo | Tipo de dados do lado direito |
---|---|
Numérico | Numérico |
Booleano | Booleano |
Cordão | Cordão |
Outras comparações mistas de tipo de dados retornarão um erro. Por exemplo, uma fórmula como ="1" > 0 retorna um erro informando que DAX as operações de comparação não suportam a comparação de valores do tipo Text com valores do tipo Integer.
Tipos de dados usados no DAX | Tipos de dados usados no Excel |
---|---|
Números (I8, R8) | Números (R8) |
Cordão | Cordão |
Booleano | Booleano |
Data/Hora | Variante |
Moeda | Moeda |
Diferenças na ordem de precedência
A ordem de precedência das operações em DAX fórmulas é basicamente a mesma usada pelo Microsoft Excel, mas alguns operadores do Excel não são suportados, como a porcentagem. Além disso, os intervalos não são suportados.
Portanto, sempre que você copiar e colar fórmulas do Excel, certifique-se de revisar a fórmula cuidadosamente, pois alguns operadores ou elementos nas fórmulas podem não ser válidos. Quando houver qualquer dúvida sobre a ordem em que as operações são realizadas, é recomendável usar parênteses para controlar a ordem das operações e remover qualquer ambiguidade sobre o resultado.