DAX operadores
A linguagem Data Analysis Expression (DAX) usa operadores para criar expressões que comparam values, executam cálculos aritméticos or 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 and lógica.
Operadores aritméticos
Para realizar operações matemáticas básicas, tais como adição, subtração, or multiplicação; combinar números; and produzir resultados numéricos, use os seguintes operadores aritméticos.
Operador aritmético | Significado | Exemplo |
---|---|---|
+ (mais sign) |
Adição | 3+3 |
- (menos sign) |
Subtração orsign | 3-1-1 |
* (asterisco) |
Multiplicação | 3*3 |
/ (barra para a frente) |
Divisão | 3/3 |
^ (caret) |
Exponenciação | 16^4 |
Observação
O plus sign pode funcionar tanto como um operador binário and como um operador unário . Um operador binário requer números em ambos os lados do operador and executa a adição. Quando você usa values em uma fórmula DAX em ambos os lados do operador binário, DAX tenta converter o values para tipos de dados numéricos if eles já são not números. Em contraste, o operador unário pode ser aplicado a qualquer tipo de argumento. O símbolo de mais not não afeta o tipo orvalueand e é simplesmente ignorado, enquanto o operador menos cria uma negativa value, if aplicada a um número value.
Operadores de comparação
Você pode comparar dois values com os seguintes operadores. Quando duas values são comparadas ao usar esses operadores, o resultado é um valuelógico, TRUE
orFALSE
.
Operador de comparação | Significado | Exemplo |
---|---|---|
= |
Igual a | [Região] = "EUA" |
== |
Estritamente igual a | [Região] == "EUA" |
> |
Maior que | [Sales Date] > "janeiro 2009" |
< |
Menos de | [Sales Date] < "1 de janeiro de 2009" |
>= |
Maior que or e igual a | [Montante] >= 20000 |
<= |
Inferior ou igual a or | [Montante] <= 100 |
<> |
Not igual a | [Região] <> "EUA" |
All operadores de comparação except == tratam BLANK como igual ao número 0, string vazia "", DATE(1899, 12, 30), orFALSE
. Como resultado, [Coluna] = 0 será true quando a value de [Coluna] for 0 orBLANK. Em contraste, [Coluna] == 0 é true apenas quando a value de [Coluna] é 0.
Operador de concatenação de texto
Use o E comercial (&
) para unir, orconcatenate, duas or mais cadeias de texto para produzir um único pedaço de texto.
Operador de texto | Significado | Exemplo |
---|---|---|
& (E comercial) |
Conecta, or concatena, duas values para produzir um texto contínuo value | [Region] & ", " & [City] |
Operadores lógicos
Use operadores lógicos (&&
) and (||
) 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.
If ambas as expressões retornam TRUE , a combinação das expressões também retorna 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.
If qualquer das expressões retornar TRUE , o resultado será TRUE ; somente quando ambas as expressões são FALSE , é que o resultado será 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" } |
Ordem de precedência dos operadores and
Em alguns casos, a ordem em que o cálculo é realizado pode afetar o valuede retorno; Portanto, é importante entender como a ordem é determinada and como você pode alterar a ordem para obter os resultados desejados.
Ordem de cálculo
Uma expressão avalia os operadores andvalues em uma ordem específica. All expressões começam sempre com um sign igual (=). A igualdade sign indica que os caracteres seguintes formam uma expressão.
Seguindo o sign 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 de left a right, mas a ordem em que os elementos são agrupados pode ser controlada até certo ponto usando parênteses.
Precedência do operador
If você combina vários operadores numa única fórmula, as operações serão ordenadas de acordo com a tabela seguinte. If os operadores têm igual precedência value, eles são ordenados de left para right. Por exemplo, if uma expressão contains um operador de multiplicação and divisão, eles são avaliados na ordem em que aparecem na expressão, de left a right.
Operador | Descrição |
---|---|
^ |
Exponenciação |
– |
Sign (como –1) |
* and / |
Multiplicação and divisão |
+ and – |
Adição and 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, você deve colocar entre parênteses a parte da fórmula que deve ser calculada first. 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 and adiciona 5 ao resultado.
=5+2*3
Por outro lado, if utilizam-se parênteses para alterar a sintaxe, modificando a ordem para que 5 and 2 sejam somados, and e o resultado multiplicado por 3 para obter 21.
=(5+2)*3
No exemplo a seguir, os parênteses ao redor da parte first da fórmula forçam o cálculo a evaluate a expressão (3 + 0.25)
firstanddivide 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 first, de acordo com as regras de precedência para operadores, and então é aplicado o operador sign. O resultado para esta expressão é -4.
=-2^2
Para garantir que o operador sign seja aplicado ao valuefirstnumé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 lida facilmente com and, comparando vários tipos de dados, muito parecido com Microsoft Excel. No entanto, o mecanismo de computação subjacente é baseado no SQL Server Analysis Services and fornece recursos avançados adicionais de um armazenamento de dados relacional, incluindo suporte mais avançado para tipos de dateandtime. Portanto, em alguns casos, os resultados dos cálculos or o comportamento das funções podem not ser os mesmos que no 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 leftandright de qualquer operador devem ser do mesmo tipo de dados. No entanto, se if os tipos de dados são diferentes, DAX irá convert convertê-los a 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, sendo possível if.
Por exemplo, suponha que você tenha dois números que deseja combinar. Um número resulta de uma fórmula, como =[Price] * .20
, and o resultado pode conter muitas casas decimais. O outro número é um inteiro que foi fornecido como uma cadeia de caracteres value.
Neste caso, DAX irá convert ambos os números para números reais em uma formatnumérica, usando a maior format numérica que pode armazenar ambos os tipos de números. Em seguida, DAX aplicará a multiplicação.
Dependendo da combinação de tipos de dados, a coerção de tipo pode not 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 tabularesandTipos de dados no Power BI Desktop.
Inteiro, Número Real, Currency, Date/timeandBlank são considerados numéricos para fins de comparação. Blank avalia para zero ao realizar uma comparação. As seguintes combinações de tipo de dados são suportadas para operações de comparação.
Tipo de dados laterais Left | Tipo de Dados Secundários Right |
---|---|
Numérico | Numérico |
Booleano | Booleano |
Cordão | Cordão |
Outras comparações entre tipos de dados diferentes retornarão um error. Por exemplo, uma fórmula como: ="1" > 0 devolve um error indicando que DAX operações de comparação not suportam a comparação de values do tipo Text com values 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 |
Currency | Currency |
Diferenças na ordem de precedência
A ordem de precedência das operações em fórmulas DAX é basicamente a mesma usada pelo Microsoft Excel, mas alguns operadores do Excel not são suportados, como a porcentagem. Além disso, são suportados os intervalos [not].
Portanto, sempre que você copiar and colar fórmulas do Excel, certifique-se de revisar a fórmula cuidadosamente, pois alguns operadores or elementos nas fórmulas podem not ser válidos. Quando houver qualquer dúvida sobre a ordem em que as operações são executadas, é recomendável usar parênteses para controlar a ordem das operações and remover qualquer ambiguidade sobre o resultado.