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.
Este artigo descreve a sintaxe e os requisitos para a linguagem de expressão da fórmula DAX.
Requisitos de sintaxe
Uma DAX fórmula sempre começa com um sinal de igual (=
). Após o sinal de igual, você pode fornecer qualquer expressão que seja avaliada como um escalar ou uma expressão que possa ser convertida em um escalar. Estes incluem o seguinte:
Uma constante escalar ou expressão que usa um operador escalar (
+,-,*,/,>=,...,&&, ...
)Referências a colunas ou tabelas. O DAX idioma sempre usa tabelas e colunas como entradas para funções, nunca uma matriz ou um conjunto arbitrário de valores.
Operadores, constantes e valores fornecidos como parte de uma expressão.
O resultado de uma função e seus argumentos necessários. Algumas DAX funções retornam uma tabela em vez de um escalar e devem ser encapsuladas em uma função que avalia a tabela e retorna um escalar; a menos que a tabela seja uma única coluna, uma única tabela de linhas, ela será tratada como um valor escalar.
A maioria das DAX funções exige um ou mais argumentos, que podem incluir tabelas, colunas, expressões e valores. No entanto, algumas funções, como PI, não exigem argumentos, mas sempre exigem parênteses para indicar o argumento nulo. Por exemplo, você deve sempre digitar PI(), não PI. Você também pode aninhar funções em outras funções.
Expressões. Uma expressão pode conter qualquer um ou todos os seguintes: operadores, constantes ou referências a colunas.
Por exemplo, a seguir estão todas as fórmulas válidas.
Fórmula | Resultado |
---|---|
= 3 |
3 |
= "Sales" |
Vendas |
= 'Sales'[Amount] |
Se você usar essa fórmula na tabela Vendas, obterá o valor da coluna Valor na tabela Vendas da linha atual. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Três por cento do valor na coluna Valor da tabela atual. Embora essa fórmula possa ser usada para calcular uma porcentagem, o resultado não é mostrado como uma porcentagem, a menos que você aplique a formatação na tabela. |
= PI() |
O valor da constante pi. |
As fórmulas podem se comportar de forma diferente dependendo de como elas são usadas. Você deve estar sempre ciente do contexto e de como os dados usados na fórmula estão relacionados a outros dados que podem ser usados no cálculo.
Requisitos de nomenclatura
Um modelo de dados geralmente contém várias tabelas. Juntos, as tabelas e suas colunas compõem um banco de dados armazenado no mecanismo de análise na memória (VertiPaq). Dentro desse banco de dados, todas as tabelas devem ter nomes exclusivos. Os nomes das colunas também devem ser exclusivos em cada tabela. Todos os nomes de objeto são insensíveis a maiúsculas e minúsculas; por exemplo, os nomes SALES e Sales representam a mesma tabela.
Cada coluna e medida que você adicionar a um modelo de dados existente deve pertencer a uma tabela específica. Especifique a tabela que contém a coluna implicitamente, ao criar uma coluna calculada dentro de uma tabela ou explicitamente, ao criar uma medida e especificar o nome da tabela em que a definição da medida deve ser armazenada.
Ao usar uma tabela ou coluna como entrada para uma função, você geralmente deve qualificar o nome da coluna. O nome totalmente qualificado de uma coluna é o nome da tabela, seguido pelo nome da coluna em colchetes: por exemplo, 'Vendas nos EUA'[Produtos]. Um nome totalmente qualificado sempre é necessário quando você faz referência a uma coluna nos seguintes contextos:
Como um argumento para a função,
VALUES
Como argumento para as funções,
ALL
ouALLEXCEPT
Em um argumento de filtro para as funções,
CALCULATE
ouCALCULATETABLE
Como um argumento para a função,
RELATEDTABLE
Como um argumento para qualquer função de inteligência de tempo
Um nome de coluna não qualificado é apenas o nome da coluna, entre colchetes: por exemplo, [Valor de Vendas]. Por exemplo, ao fazer referência a um valor escalar da mesma linha da tabela atual, você pode usar o nome da coluna não qualificada.
Se o nome de uma tabela contiver espaços, palavras-chave reservadas ou caracteres não permitidos, você deverá colocar o nome da tabela entre aspas simples. Você também deve colocar nomes de tabela entre aspas se o nome contiver caracteres fora do intervalo de caracteres alfanuméricos ANSI, independentemente de sua localidade dar suporte ao conjunto de caracteres ou não. Por exemplo, se você abrir uma pasta de trabalho que contenha nomes de tabela escritos em caracteres cirílicos, como 'Таблица', o nome da tabela deverá estar entre aspas, mesmo que não contenha espaços.
Observação
Para facilitar a inserção dos nomes totalmente qualificados das colunas, use o recurso Preenchimento Automático no editor de fórmulas.
Tabelas
Os nomes de tabela são necessários sempre que a coluna é de uma tabela diferente da tabela atual. Os nomes de tabela devem ser exclusivos no banco de dados.
Os nomes de tabela devem ser colocados entre aspas simples se contiverem espaços, outros caracteres especiais ou caracteres alfanuméricos não ingleses.
Medidas
Os nomes de medida devem estar sempre entre colchetes.
Nomes de medidas podem conter espaços.
Cada nome de medida deve ser exclusivo em um modelo. Portanto, o nome da tabela é opcional na frente de um nome de medida ao referenciar uma medida existente. No entanto, ao criar uma medida, você deve sempre especificar uma tabela em que a definição da medida será armazenada.
Colunas
Os nomes de coluna devem ser únicos no contexto de uma tabela; no entanto, várias tabelas podem ter colunas com os mesmos nomes (a diferenciação é feita pelo nome da tabela).
Em geral, as colunas podem ser referenciadas sem referenciar a tabela base à qual pertencem, exceto quando pode haver um conflito de nomes para resolver ou com determinadas funções que exigem que os nomes de coluna sejam totalmente qualificados.
Palavras-chave reservadas
Se o nome usado para uma tabela for o mesmo que uma palavra-chave reservada do Analysis Services, um erro será gerado e você deverá renomear a tabela. No entanto, você poderá usar palavras-chave em nomes de objeto se o nome do objeto estiver entre colchetes (para colunas) ou aspas (para tabelas).
Observação
As aspas podem ser representadas por vários caracteres diferentes, dependendo do aplicativo. Se você colar fórmulas de um documento externo ou página da Web, verifique o código ASCII do caractere usado para abrir e fechar aspas, para garantir que elas sejam as mesmas. Caso contrário DAX , talvez não seja possível reconhecer os símbolos como aspas, tornando a referência inválida.
Caracteres especiais
Os seguintes caracteres e tipos de caractere não são válidos nos nomes de tabelas, colunas ou medidas:
Espaços à esquerda ou à direita; a menos que os espaços estejam entre delimitadores de nome, colchetes ou apóstrofos únicos.
Caracteres de controle
Os seguintes caracteres que não são válidos nos nomes dos objetos:
.,;':/\\*|?&%$!+=()[]{}<>
Exemplos de nomes de objeto
A tabela a seguir mostra exemplos de alguns nomes de objeto:
Tipos de objeto | Exemplos | Comentário |
---|---|---|
Nome da tabela | Vendas | Se o nome da tabela não contiver espaços ou outros caracteres especiais, o nome não precisará ser colocado entre aspas. |
Nome da tabela | 'Vendas do Canadá' | Se o nome contiver espaços, tabulações ou outros caracteres especiais, coloque o nome entre aspas simples. |
Nome da coluna totalmente qualificado | Sales[Amount] | O nome da tabela precede o nome da coluna e o nome da coluna está entre colchetes. |
Nome de medida totalmente qualificado | Vendas[Lucro] | O nome da tabela precede o nome da medida e o nome da medida está entre colchetes. Em determinados contextos, um nome totalmente qualificado é sempre necessário. |
Nome de coluna não qualificado | [Quantidade] | O nome não qualificado é apenas o nome da coluna entre colchetes. Contextos em que você pode usar o nome não qualificado incluem fórmulas em uma coluna calculada dentro da mesma tabela ou em uma função de agregação que está sendo verificada na mesma tabela. |
Coluna totalmente qualificada na tabela com espaços | 'Canada Sales'[Qty] | O nome da tabela contém espaços, portanto, ele deve ser cercado por aspas simples. |
Outras restrições
A sintaxe necessária para cada função, e o tipo de operação que ela pode executar, varia muito dependendo da função. Em geral, no entanto, as seguintes regras se aplicam a todas as fórmulas e expressões:
DAX fórmulas e expressões não podem modificar ou inserir valores individuais em tabelas.
Você não pode criar linhas calculadas usando DAX. Você pode criar apenas colunas e medidas calculadas.
Ao definir colunas calculadas, você pode aninhar funções em qualquer nível.
DAX tem várias funções que retornam uma tabela. Normalmente, você usa os valores retornados por essas funções como entrada para outras funções, que exigem uma tabela como entrada.
DAX operadores e constantes
A tabela a seguir lista os operadores com suporte por DAX. Para obter mais informações sobre a sintaxe de operadores individuais, consulte DAX operadores.
Tipo de operador | Símbolo e uso |
---|---|
Operador de parênteses | () ordem de precedência e agrupamento de argumentos |
Operadores aritméticos | + (adição)- (subtração)* (multiplicação)/ (divisão)^ (exponencialização) |
Operadores de comparação | = (igual a)> (maior que)< (menor que)>= (maior ou igual a)<= (menor ou igual a)<> (diferente de) |
Operador de concatenação de texto | & (concatenação) |
Operadores lógicos | && (e)|| (ou) |
Tipos de dados
Você não precisa transmitir, converter ou especificar de outra forma o tipo de dados de uma coluna ou valor usado em uma fórmula DAX. Quando você usa dados em uma DAX fórmula, DAX identifica automaticamente os tipos de dados em colunas referenciadas e os valores que você digita e executa conversões implícitas quando necessário para concluir a operação especificada.
Por exemplo, se você tentar adicionar um número a um valor de data, o mecanismo interpretará a operação no contexto da função e converterá os números em um tipo de dados comum e apresentará o resultado no formato pretendido, uma data.
No entanto, há algumas limitações nos valores que podem ser convertidos com êxito. Se um valor ou uma coluna tiver um tipo de dados incompatível com a operação atual, DAX retornará um erro. Além disso, DAX não fornece funções que permitam alterar explicitamente, converter ou modificar o tipo de dados existentes que você importou para um modelo de dados.
Importante
DAX não dá suporte ao uso do tipo de dados variante. Portanto, quando você carrega ou importa dados em um modelo de dados, espera-se que os dados em cada coluna sejam geralmente de um tipo de dados consistente.
Algumas funções retornam valores escalares, incluindo cadeias de caracteres, enquanto outras funções funcionam com números, números inteiros e números reais, ou datas e horas. O tipo de dados necessário para cada função é descrito na seção, DAX funções.
Você pode usar tabelas que contêm várias colunas e várias linhas de dados como argumento para uma função. Algumas funções também retornam tabelas, que são armazenadas na memória e podem ser usadas como argumentos para outras funções.
Data e hora
DAX armazena valores de data e hora usando o tipo de dados datetime usado pelo Microsoft SQL Server. O formato Datetime utiliza um número de ponto flutuante, no qual os valores de data correspondem à parte inteira que representa o número de dias desde 30 de dezembro de 1899. Os valores de tempo correspondem à parte decimal de um valor de data em que Horas, minutos e segundos são representados por frações decimais de um dia. DAX Funções de data e hora convertem implicitamente argumentos em tipo de dados datetime.
Observação
O valor máximo exato de DateTime com suporte por DAX é 31 de dezembro de 9999 00:00:00.
Literal de data e hora
A partir da versão de agosto de 2021 do Power BI Desktop, DAX os valores de data e data/hora podem ser especificados como literais no formato dt"YYYY-MM-DD"
, dt"YYYY-MM-DDThh:mm:ss"
ou dt"YYYY-MM-DD hh:mm:ss"
. Quando especificado como literal, o uso de DATE, TIME, DATEVALUETIMEVALUE funções na expressão não são necessários.
Por exemplo, a expressão a seguir usa DATE e TIME funções para filtrar em OrderDate:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
A mesma expressão de filtro pode ser especificada como um literal:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Observação
O formato literal de data e hora DAX não é suportado em todas as versões do Power BI Desktop, Analysis Services e Power Pivot no Excel. As funcionalidades novas e atualizadas DAX normalmente são introduzidas primeiro no Power BI Desktop e depois incluídas no Analysis Services e no Power Pivot no Excel.