Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A linguagem Expressão de Análise de Dados (DAX) usa operadores para criar expressões que comparam valores, executam cálculos aritméticos ou funcionam com cadeias de caracteres.
Tipos de operadores
Há quatro tipos diferentes de operadores de cálculo: aritmético, comparação, concatenação de texto e lógica.
Operadores aritméticos
Para executar operações matemáticas básicas, 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 | Meaning | Example |
|---|---|---|
+ (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 frente) |
Divisão | 3/3 |
^ (circunflexo) |
Exponenciação | 16^4 |
Observação
O sinal de adição 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. Por outro lado, o operador unário pode ser aplicado a qualquer tipo de argumento. O símbolo de adição não afeta o tipo ou o valor e é simplesmente ignorado, enquanto o operador de subtração 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 ou TRUEFALSE.
| Operador de comparação | Meaning | Example |
|---|---|---|
= |
Igual a | [Região] = "EUA" |
== |
Estritamente igual a | [Região] == "EUA" |
> |
Maior que | [Data de vendas] > "Jan 2009" |
< |
Menor que | [Data de vendas] < "Jan 1 2009" |
>= |
Maior ou igual a | [Quantidade] >= 20000 |
<= |
Menor que ou igual a | [Quantidade] <= 100 |
<> |
É diferente de | [Região] <> "EUA" |
Todos os operadores de comparação, exceto == tratam BLANK como igual ao número 0, cadeia de caracteres vazia "", DATE(1899, 12, 30) ou FALSE. Como resultado, [Coluna] = 0 será verdadeiro quando o valor de [Coluna] for 0 ou BLANK. Por outro lado, [Coluna] == 0 é verdadeiro somente quando o valor de [Coluna] é 0.
Operador de concatenação de texto
Use o e comercial (&) para unir ou concatenar duas ou mais cadeias de texto para produzir uma única parte do texto.
| Operador de texto | Meaning | Example |
|---|---|---|
& (ampersand) |
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 | Meaning | Exemplos |
|---|---|---|
&&(ampersand duplo) |
Cria uma condição AND entre duas expressões 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. |
([Region] = "France") && ([BikeBuyer] = "yes")) |
|| (símbolo de pipe duplo) |
Cria uma condição OR entre duas expressões lógicas. Se uma das expressões retornar TRUE, o resultado é TRUE; somente quando ambas as expressões retornarem FALSE, o resultado será FALSE. |
(([Region] = "France") || ([BikeBuyer] = "yes")) |
IN |
Cria uma condição lógica OR entre cada linha que está sendo comparada a uma tabela. Observação: a sintaxe do construtor de tabela usa chaves. | 'Product'[Color] IN { "Red", "Blue", "Black" } |
Operadores e ordem de precedência
Em alguns casos, a ordem na qual o cálculo é executado 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 sempre começam com um sinal de igual (=). O sinal de igual indica que os caracteres subsequentes constituem uma expressão.
Depois do 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 na qual 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 valor de precedência igual, eles serão ordenados da esquerda para a direita. Por exemplo, se uma expressão contiver um operador de multiplicação e divisão, elas serão avaliadas na ordem em que aparecem na expressão, da esquerda para a direita.
| Operator | Description |
|---|---|
^ |
Exponenciação |
– |
Sinal (como, por exemplo, –1) |
* e / |
Multiplicação e divisão |
+ e – |
Adição e subtração |
& |
Conecta duas cadeias de caracteres de texto (concatenação) |
=,==,<,>,<=,>=,<>,IN |
Comparison |
NOT |
NOT (operador unário) |
Usando parênteses para controlar a ordem de cálculo
Para alterar a ordem de avaliação, você deve colocar entre parênteses essa 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 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 exponencialização é aplicado primeiro, de acordo com as regras de precedência para operadores e, em seguida, o operador de sinal é aplicado. O resultado dessa 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 dessa expressão é 4.
= (-2)^2
Compatibilidade
DAX manipula e compara facilmente vários tipos de dados, assim como 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 dá suporte a mais tipos de dados do que o Excel. Esta seção descreve as principais diferenças.
Coagir tipos de dados de operandos
Em geral, os dois operandos no lado esquerdo e direito de qualquer operador devem ser do mesmo tipo de dados. No entanto, se os tipos de dados forem diferentes, DAX converta-os em um tipo de dados comum para aplicar o operador em alguns casos:
- Ambos os operandos são convertidos no maior tipo de dados comum possível.
- O operador é aplicado, se 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.
Nesse caso, DAX 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 de tipos de dados com suporte DAX, consulte os tipos de dados com suporte em modelos de tabela e tipos de dados no Power BI Desktop.
Inteiro, Número Real, Moeda, Data/Hora e Em Branco são considerados numéricos para fins de comparação. Blanco é considerado como zero ao se fazer uma comparação. As combinações de tipo de dados a seguir têm suporte para operações de comparação.
| Tipo de dados do lado esquerdo | Tipo de dados do lado direito |
|---|---|
| Numeric | Numeric |
| booleano | booleano |
| String | String |
Outras comparações de tipo de dados misto 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 dão suporte à comparação de valores do tipo Texto com valores do tipo Inteiro.
| Tipos de dados usados em DAX | Tipos de dados usados no Excel |
|---|---|
| Números (I8, R8) | Números (R8) |
| String | String |
| booleano | booleano |
| DateTime | Variant |
| Moeda | Moeda |
Diferenças na ordem de precedência
A ordem de precedência de operações em DAX fórmulas é basicamente a mesma usada pelo Microsoft Excel, mas alguns operadores do Excel não têm suporte, como porcentagem. Além disso, não há suporte para intervalos.
Portanto, sempre que você copiar e colar fórmulas do Excel, certifique-se de examinar a fórmula com cuidado, pois alguns operadores ou elementos nas fórmulas podem não ser válidos. Quando há alguma dúvida sobre a ordem na qual as operações são executadas, é recomendável que você use parênteses para controlar a ordem das operações e remover qualquer ambiguidade sobre o resultado.