Referência de operador DAX do PowerPivot
A linguagem DAX (Data Analysis Expression) usa operadores para criar expressões que comparam valores, executar cálculos aritméticos ou trabalhar com cadeias de caracteres. Esta seção descreve o uso de cada operador.
Tipos de operadores
Há quatro tipos diferentes de operadores de cálculo: aritmético, de comparação, de concatenação de texto e lógico.
Operadores aritméticos
Para efetuar 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 operadores aritméticos a seguir.
Operador aritmético |
Significado |
Exemplo |
---|---|---|
+ (sinal de adição) |
Adição |
3+3 |
– (sinal de subtração) |
Subtração/sinal |
3–1–1 |
* (asterisco) |
Multiplicação |
3*3 |
/ (barra) |
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 nos dois lados do operador e executa a adição. Quando você usar valores em uma fórmula DAX nos dois lados do operador binário, a DAX tentará converter os valores em tipos de dados numéricos se eles já não forem números. Em contraste, 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; ele é simplesmente ignorado, enquanto o operador menos cria um valor negativo, se aplicado a um valor numérico. |
Operadores de comparação
É possível 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 |
[Region] = "USA" |
> |
Maior que |
[Sales Date] > "Jan 2009" |
< |
Menor que |
[Sales Date] < "Jan 1 2009" |
>= |
Maior que ou igual a |
[Amount] >= 20000 |
<= |
Menor que ou igual a |
[Amount] <= 100 |
<> |
Diferente de |
[Region] <> "USA" |
Operador de concatenação de texto
Use o E comercial (&) para unir, ou concatenar, duas ou mais cadeias de caracteres de texto para produzir um só texto.
Operador de texto |
Significado |
Exemplo |
---|---|---|
& (E comercial) |
Conecta ou concatena dois valores para gerar um valor de texto contínuo |
[Region] & ", " & [City] |
Operadores lógicos
Use operadores lógicos (&&) e (||) para combinar expressões para gerar um único resultado.
Operador de texto |
Significado |
Exemplos |
---|---|---|
&& (E comercial duplo) |
Cria uma condição AND entre duas expressões em que cada uma tem 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 retornará FALSE. |
([Region] = "France") && ([BikeBuyer] = "yes")) |
|| (barra vertical dupla) |
Cria uma condição OR entre duas expressões lógicas. Se qualquer expressão retornar TRUE, o resultado será TRUE; apenas quando ambas as expressões são FALSE é que o resultado é FALSE. |
(([Region] = "France") || ([BikeBuyer] = "yes")) |
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 compreender 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. Expressões sempre são 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 de 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 operadores de multiplicação e divisão, eles serão avaliados na ordem em que aparecem na expressão, da esquerda para a direita.
Operador |
Descrição |
---|---|
^ |
Exponenciação |
– |
Sinal (como em -1) |
* e / |
Multiplicação e divisão |
+ e – |
Adição e subtração |
& |
Conecta duas cadeias de caracteres (concatenação) |
=< ><=>=<> |
Comparação |
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 gera 11 pois a multiplicação é calculada antes da adição. A fórmula multiplica 2 por 3 e, depois, adiciona 5 ao resultado.
=5+2*3
Em contraste, se você usar parênteses para alterar a sintaxe, a ordem será alterada de forma que 5 e 2 sejam adicionados juntos e que o resultado seja multiplicado por 3 para gerar 21.
=(5+2)*3
No exemplo a seguir, os parênteses que delimitam a primeira parte da fórmula forçam o cálculo a avaliar a expressão (3 + 0.25) primeiro e, depois, a dividir 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 dos operadores e, em seguida, o sinal do operador é aplicado. O resultado desta expressão é -4.
=-2^2
Para assegurar que o sinal do operador seja aplicado primeiro ao valor numérico, você pode usar parênteses para controlar os operadores, como mostra o exemplo a seguir. O resultado desta expressão é 4.
= (-2)^2
Notas de compatibilidade
A DAX manipula e compara facilmente vários tipos de dados, de maneira semelhante ao Microsoft Excel. Entretanto, o mecanismo de computação subjacente se baseia no SQL Server Analysis Services e fornece recursos avançados adicionais de um repositório de dados relacional, inclusive maior suporte para tipos de data e hora. Portanto, em alguns casos, os resultados de cálculos ou o comportamento de funções pode não ser igual ao do Excel. Além disso, a DAX oferece suporte a mais tipos de dados do que o Excel. Esta seção descreve as principais diferenças.
Forçando tipos de dados de operandos
Em geral, os dois operandos dos lados esquerdo e direito de qualquer operador devem ter o mesmo tipo de dados. Entretanto, se os tipos de dados forem diferentes, a DAX os converterá em um tipo de dados em comum para comparação, desta forma:
Primeiro, os dois operandos são convertidos no maior tipo de dados em comum possível.
Em seguida, os operandos são comparados.
Por exemplo, digamos que você tenha dois números a serem combinados. 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 da cadeia de caracteres.
Nesse caso, a DAX converterá os dois números em números reais em um formato numérico, usando o maior formato numérico que possa armazenar os dois tipos de números. Depois, a DAX comparará os valores.
Por outro lado, o Excel tenta comparar valores de tipos diferentes sem primeiro forçar o uso de um tipo em comum. Por isso, você pode ver resultados diferentes em DAX, comparado ao Excel, para a mesma expressão de comparação.
Tipos de dados usados em DAX |
Tipos de dados usados no Excel |
---|---|
Números (I8, R8) Boolean String DateTime Currency |
Números (R8) Booleano String Variant Currency |
Para obter mais informações sobre a conversão implícita de tipos de dados, consulte Tipos de dados com suporte em pastas de trabalho PowerPivot.
Diferenças na ordem de precedência
A ordem de precedência de operações em fórmulas DAX é basicamente a mesma usada pelo Microsoft Excel, mas alguns operadores do Excel não são suportados, como, por exemplo, a porcentagem. Além disso, não há suporte a intervalos.
Portanto, sempre que você copiar e colar fórmulas do Excel, revise bem a fórmula, pois alguns operadores ou elementos das fórmulas talvez não sejam válidos. Em caso de dúvida sobre a ordem de execução das operações, é recomendável usar parênteses para controlar a ordem das operações e remover qualquer ambiguidade sobre o resultado.
Consulte também