evento
Junte-se a nós na FabCon Vegas
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registe-se hoje mesmoEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Este artigo descreve a sintaxe e os requisitos para a linguagem de expressão de fórmula DAX.
Uma fórmula DAX sempre começa com um sinal de igual (=
). Após o sinal de igual, você pode fornecer qualquer expressão que seja avaliada como escalar ou uma expressão que possa ser convertida em escalar. Estes incluem o seguinte:
Uma constante escalar ou expressão que usa um operador escalar (+,-,*,/,>=,...,&&, ...
)
Referências a colunas ou tabelas. A linguagem DAX sempre usa tabelas e colunas como entradas para funções, nunca uma matriz ou 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 funções DAX retornam uma tabela em vez de uma escalar e devem ser encapsuladas em uma função que avalia a tabela e retorna uma escalar; A menos que a tabela seja uma única coluna, uma única tabela de linhas, ela é tratada como um valor escalar.
A maioria das funções DAX requer um ou mais argumentos, que podem incluir tabelas, colunas, expressões e valores. No entanto, algumas funções, como PI, não requerem argumentos, mas sempre requerem parênteses para indicar o argumento nulo. Por exemplo, você sempre deve digitar PI(), não PI. Você também pode aninhar funções dentro de 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 para a linha atual. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Três por cento do valor na coluna "Valor" da tabela atual. Embora esta fórmula possa ser utilizada para calcular uma percentagem, o resultado não é apresentado como uma percentagem, a menos que aplique formatação na tabela. |
= PI() |
O valor da constante pi. |
As fórmulas podem comportar-se de forma diferente dependendo da forma como são utilizadas. 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.
Um modelo de dados geralmente contém várias tabelas. Juntas, 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 dentro de cada tabela. Todos os nomes de objeto são insensíveis a maiúsculas e minúsculas; por exemplo, os nomes SALES e Sales representariam a mesma tabela.
Cada coluna e medida adicionada a um modelo de dados existente deve pertencer a uma tabela específica. Você especifica a tabela que contém a coluna implicitamente, quando cria uma coluna calculada dentro de uma tabela, ou explicitamente, quando cria uma medida e especifica o nome da tabela onde a definição de medida deve ser armazenada.
Quando você usa uma tabela ou coluna como uma entrada para uma função, geralmente deve se qualificar nome da coluna. O nome
Como argumento para a função, VALUES
Como argumento para as funções, ALL
ou ALLEXCEPT
Em um argumento de filtro para as funções, CALCULATE
ou CALCULATETABLE
Como argumento para a função, RELATEDTABLE
Como argumento para qualquer função de inteligência temporal
Um nome de coluna não qualificado é apenas o nome da coluna, entre parênteses: por exemplo, [Valor das vendas]. Por exemplo, quando estás a fazer referência a um valor escalar da mesma linha da tabela atual, podes utilizar 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 suportar o 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á ser colocado entre aspas, mesmo que não contenha espaços.
Nota
Para facilitar a inserção dos nomes totalmente qualificados das colunas, use o recurso Preenchimento Automático no editor de fórmulas.
Os nomes de tabela são necessários sempre que a coluna é de uma tabela diferente da tabela atual. Os nomes das tabelas devem ser exclusivos dentro do banco de dados.
Os nomes das tabelas devem ser colocados entre aspas simples se contiverem espaços, outros caracteres especiais ou quaisquer caracteres alfanuméricos não ingleses.
Os nomes das medidas devem estar sempre entre parênteses.
Os nomes das medidas podem conter espaços.
Cada nome de medida deve ser exclusivo dentro de um modelo. Portanto, o nome da tabela é opcional na frente de um nome de medida ao fazer referência a uma medida existente. No entanto, ao criar uma medida, você sempre deve especificar uma tabela onde a definição de medida será armazenada.
Os nomes das colunas devem ser exclusivos no contexto de uma tabela; no entanto, várias tabelas podem ter colunas com os mesmos nomes (a desambiguação vem com o nome da tabela).
Em geral, as colunas podem ser referenciadas sem fazer referência à tabela base a que pertencem, exceto quando pode haver um conflito de nomes para resolver ou com determinadas funções que exigem que os nomes das colunas sejam totalmente qualificados.
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ê pode usar palavras-chave em nomes de objetos se o nome do objeto estiver entre colchetes (para colunas) ou aspas (para tabelas).
Nota
As aspas podem ser representadas por vários caracteres diferentes, dependendo da aplicação. 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, o DAX pode não conseguir reconhecer os símbolos como aspas, tornando a referência inválida.
Os seguintes caracteres e tipos de caracteres não são válidos nos nomes de tabelas, colunas ou medidas:
Espaços iniciais ou finais; a menos que os espaços sejam delimitados por delimitadores de nome, colchetes ou apóstrofos simples.
Caracteres de controlo
Os seguintes caracteres que não são válidos nos nomes de objetos:
.,;':/\\*|?&%$!+=()[]{}<>
A tabela a seguir mostra exemplos de alguns nomes de objetos:
Tipos de objeto | Exemplos | Comentar |
---|---|---|
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 no Canadá' | Se o nome contiver espaços, tabulações ou outros caracteres especiais, coloque o nome entre aspas simples. |
Nome da coluna totalmente qualificado | Vendas[Quantidade] | O nome da tabela precede o nome da coluna e o nome da coluna é colocado entre parênteses. |
Nome da medida totalmente qualificado | Vendas[Lucro] | O nome da tabela precede o nome da medida e o nome da medida é colocado entre parênteses. Em determinados contextos, é sempre necessário um nome totalmente qualificado. |
Nome da coluna não qualificado | [Montante] | O nome não qualificado é apenas o nome da coluna, entre parênteses. Os 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á verificando a mesma tabela. |
Coluna totalmente qualificada na tabela com espaços | 'Canada Sales'[Qtd] | O nome da tabela contém espaços, por isso deve ser cercado por aspas simples. |
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 aplicam-se a todas as fórmulas e expressões:
As fórmulas e expressões DAX não podem modificar ou inserir valores individuais em tabelas.
Não é possível 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.
O 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.
A tabela a seguir lista os operadores suportados pelo DAX. Para obter mais informações sobre a sintaxe dos operadores individuais, consulte operadores DAX.
Tipo de operador | Símbolo e utilização |
---|---|
Operador de parênteses |
() ordem de precedência e agrupamento de argumentos |
Operadores aritméticos |
+ (adição)- (subtração)* (multiplicação)/ (divisão)^ (exponenciação) |
Operadores de comparação |
= (igual a)> (maior que)< (inferior a)>= (maior ou igual a)<= (inferior ou igual a)<> (não igual a) |
Operador de concatenação de texto |
& (concatenação) |
Operadores lógicos |
&& (e)|| (ou) |
Não é necessário transmitir, converter ou especificar o tipo de dados de uma coluna ou valor que você usa em uma fórmula DAX. Quando você usa dados em uma fórmula DAX, o DAX identifica automaticamente os tipos de dados em colunas referenciadas e os valores digitados 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, em seguida, apresentará o resultado no formato pretendido, uma data.
No entanto, existem 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, o DAX retornará um erro. Além disso, o DAX não fornece funções que permitem alterar, converter ou modificar explicitamente o tipo de dados de dados existentes que você importou para um modelo de dados.
Importante
O DAX não suporta o uso do tipo de dados variante. Portanto, quando você carrega ou importa dados para 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 trabalham com 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 funções DAX.
Você pode usar tabelas contendo 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.
O DAX armazena valores de data e hora usando o tipo de dados datetime usado pelo Microsoft SQL Server. O formato datetime usa um número de vírgula flutuante onde os valores Date correspondem à porção 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 onde Horas, minutos e segundos são representados por frações decimais de um dia. As funções de data e hora DAX convertem implicitamente os argumentos para o tipo de dados data/hora.
Nota
O valor máximo exato de DateTime suportado pelo DAX é 31 de dezembro de 9999 00:00:00.
A partir da versão de agosto de 2021 do Power BI Desktop, os valores de data e data/hora do DAX 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 das funções DATE, TIME, DATEVALUE, TIMEVALUE na expressão não é necessário.
Por exemplo, a expressão a seguir usa as funções DATE e TIME para filtrar 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"
)
Nota
O formato literal de data e data/hora de tipo DAX não é suportado em todas as versões do Power BI Desktop, Analysis Services e Power Pivot em Excel. Normalmente, a funcionalidade DAX nova e atualizada é introduzida primeiro no Power BI Desktop e, posteriormente, incluída no Analysis Services e no Power Pivot no Excel.
evento
Junte-se a nós na FabCon Vegas
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registe-se hoje mesmoFormação
Percurso de aprendizagem
Utilizar a linguagem DAX no Power BI Desktop - Training
Este percurso de aprendizagem apresenta o DAX (Data Analysis Expressions) e fornece-lhe competências fundamentais necessárias para melhorar os modelos semânticos com cálculos. Começa por descrever a estrutura do modelo do Power BI Desktop e como a mesma pode ser melhorada com os cálculos DAX. Em seguida, descreve como pode escrever fórmulas DAX e os diferentes tipos de cálculos de modelos, incluindo tabelas e colunas calculadas, bem como medidas. São apresentados os contextos de avaliação e as unidades subs
Certificação
Microsoft Certified: Power BI Data Analyst Associate - Certifications
Demonstre métodos e boas práticas que se alinhem aos requisitos técnicos e comerciais para modelagem, visualização e análise de dados com o Microsoft Power BI.