DAX sintaxe
Este artigo descreve os requisitos de sintaxe and para a linguagem de expressão de fórmula DAX.
Requisitos de sintaxe
Uma fórmula DAX começa sempre com um sign igual (=
). Após o sinal de igual sign, pode fornecer qualquer expressão que seja avaliada como escalar ou or uma expressão que possa ser convertida num escalar. Estes incluem o seguinte:
Uma constante escalar, or expressão que usa um operador escalar (
+,-,*,/,>=,...,&&, ...
)Referências a colunas das tabelas or. A linguagem DAX usa sempre as colunas das tabelas and como entradas para funções, nunca um conjunto arbitrário de matriz orvalues.
Operadores, constantes andvalues fornecidos como parte de uma expressão.
O resultado de uma função and e os seus argumentos necessários. Algumas funções DAX retornam uma tabela em vez de um escalar, and deve ser encapsulada em uma função que avalia a tabela and retornando um escalar; a menos que a tabela seja de uma única coluna e uma única linha, será tratada como um escalar value.
A maioria das funções DAX requer um or argumento a mais, que pode incluir tabelas, colunas, expressões, andvalues. No entanto, algumas funções, como PI, not exigem nenhum argumento, mas sempre exigem parênteses para indicar o argumento nulo. Por exemplo, você deve sempre digitar PI(), notPI. Você também pode aninhar funções dentro de outras funções.
Expressões. Uma expressão pode conter qualquer orall dos seguintes: operadores, constantes or referências a colunas.
Por exemplo, as seguintes são fórmulas válidas de all.
Fórmula | Resultado |
---|---|
= 3 |
3 |
= "Sales" |
Vendas |
= 'Sales'[Amount] |
If você usar essa fórmula na tabela Vendas, obterá o value da coluna Valor na tabela Vendas para a linha atual. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Três por cento dos value na coluna de Quantidade da tabela atual. Embora esta fórmula possa ser usada para calculate uma porcentagem, o resultado not é mostrado como uma porcentagem, a menos que se aplique formatação na tabela. |
= PI() |
O value 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 and em que os dados que utiliza na fórmula estão related relacionados a outros dados que possam ser usados no cálculo.
Requisitos de nomenclatura
Um modelo de dados geralmente contains várias tabelas. Juntas, as tabelas and suas colunas compõem um banco de dados armazenado no mecanismo de análise na memória (VertiPaq). Dentro desse banco de dados, all tabelas devem ter nomes exclusivos. Os nomes das colunas também devem ser exclusivos dentro de cada tabela. All nomes de objeto não diferenciam maiúsculas de minúsculas; por exemplo, os nomes SALESandSales representariam a mesma tabela.
Cada coluna andmeasure você adiciona a um modelo de dados existente deve pertencer a uma tabela específica. Você especifica a tabela que contains a coluna implicitamente, quando cria uma coluna calculada dentro de uma tabela, or explicitamente, quando cria uma measureand especifica o nome da tabela onde a definição de measure deve ser armazenada.
Quando você usa uma tabela or coluna como uma entrada para uma função, geralmente você deve qualificar nome da coluna. O nome
Como argumento para a função,
VALUES
Como argumento para as funções,
ALL
orALLEXCEPT
Em um argumento filter para as funções,
CALCULATE
orCALCULATETABLE
Como argumento para a função,
RELATEDTABLE
Como argumento para uma função qualquer de inteligência time
Um nome de coluna não qualificado é apenas o nome da coluna, entre parênteses: por exemplo, [Valor das vendas]. Por exemplo, ao fazer referência a uma value escalar da mesma linha da tabela atual, você pode usar o nome da coluna não qualificada.
If o nome de uma tabela contains espaços, palavras-chave reservadas or caracteres não permitidos, você deve colocar o nome da tabela entre aspas simples. Você também deve colocar nomes de tabela entre aspas if o nome contains quaisquer caracteres fora do rangede caracteres alfanuméricos ANSI, independentemente de sua localidade suportar o conjunto de caracteres ornot. Por exemplo, if você abre uma pasta de trabalho que contains nomes de tabela escritos em caracteres cirílicos, como 'Таблица', o nome da tabela deve ser colocado entre aspas even embora not 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 das tabelas devem ser exclusivos dentro do banco de dados.
Os nomes das tabelas devem ser colocados entre aspas simples if contiverem espaços, outros caracteres especiais or quaisquer caracteres alfanuméricos não ingleses.
Medidas
Measure Nomes devem estar sempre entre parênteses.
Os nomes Measure podem conter espaços.
Cada nome de measure deve ser exclusivo dentro de um modelo. Portanto, o nome da tabela é opcional na frente de um nome de measure ao fazer referência a um measureexistente. No entanto, ao criar um measure você sempre deve especificar uma tabela onde a definição de measure será armazenada.
Colunas
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 except quando pode haver um conflito de nomes para resolver or com determinadas funções que exigem que os nomes das colunas sejam totalmente qualificados.
Palavras-chave reservadas
If o nome usado para uma tabela for o mesmo que uma palavra-chave reservada do Analysis Services, uma error será gerada and você deverá renomear a tabela. No entanto, você pode usar palavras-chave em nomes de objeto if o nome do objeto estiver entre colchetes (para colunas) or aspas (para tabelas).
Observação
As aspas podem ser representadas por vários caracteres diferentes, dependendo da aplicação. If você colar fórmulas de um documento externo or página da Web, certifique-se de verificar o código ASCII do caractere que é usado para abrir and fechar aspas, para garantir que eles sejam os mesmos. Caso contrário, DAX pode ser incapaz de reconhecer os símbolos como aspas, tornando a referência inválida.
Caracteres especiais
Os seguintes caracteres and tipos de caracteres not são válidos nos nomes de tabelas, colunas or medidas:
Espaços à esquerda or e espaços à direita; a menos que os espaços estejam envolvidos por delimitadores de nome, parênteses ou pelos apóstrofos or.
Caracteres de controlo
Os seguintes caracteres são válidos nos nomes de objetos: not
.,;':/\\*|?&%$!+=()[]{}<>
Exemplos de nomes de objetos
A tabela a seguir mostra exemplos de alguns nomes de objetos:
Tipos de objeto | Exemplos | Comentar |
---|---|---|
Nome da tabela | Vendas | If o nome da tabela not contiver espaços or outros caracteres especiais, o nome not precisa ser colocado entre aspas. |
Nome da tabela | 'Vendas no Canadá' | If o nome contains espaços, tabulações or 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 and o nome da coluna é colocado entre parênteses. |
Nome measure totalmente qualificado | Vendas[Lucro] | O nome da tabela precede o nome da measureand o nome da measure está 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 pode-se usar o nome não qualificado incluem fórmulas em uma coluna calculada dentro da mesma tabela, or em uma função de agregação que está a verificar a mesma tabela. |
Coluna totalmente qualificada na tabela com espaços | 'Canada Sales'[Qtd] | O nome da tabela contains espaços, por isso deve ser colocado entre aspas simples. |
Outras restrições
A sintaxe necessária para cada função, and o tipo de operação que pode executar, varia muito dependendo da função. No entanto, em geral, aplicam-se as seguintes regras às fórmulas all expressões and:
DAX fórmulas and expressões não é possível modificar or inserir elementos values individuais em tabelas.
Não é possível criar linhas calculadas usando DAX. Você pode criar apenas colunas and 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 values retornados por essas funções como entrada para outras funções, que exigem uma tabela como entrada.
DAX operadores and constantes
A tabela a seguir lista os operadores suportados pelo DAX. Para obter mais informações sobre a sintaxe de operadores individuais, consulte DAX operadores.
Tipo de operador | Símbolo and utilização |
---|---|
Operador de parênteses |
() ordem de precedência and 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 que or, igual a)<= (inferior a or igual a)<> (not igual a) |
Operador de concatenação de texto |
& (concatenação) |
Operadores lógicos |
&& (and)|| (or) |
Tipos de dados
Você not precisa converter, convertou então or especificar o tipo de dados de uma coluna orvalue que você usa numa fórmula DAX. Quando você usa dados em uma fórmula DAX, o DAX identifica automaticamente os tipos de dados em colunas referenciadas and do values digitado and executa conversões implícitas quando necessário para concluir a operação especificada.
Por exemplo, if você tentar adicionar um número a um datevalue, o mecanismo interpretará a operação no contexto da função, andconvert os números a um tipo de dados comum and apresentará o resultado na formatpretendida, um date.
No entanto, existem algumas limitações no values que podem ser convertidas com sucesso. If a valueor a coluna tem um tipo de dados incompatível com a operação atual, DAX retorna um error. Além disso, DAXnot fornece funções que permitem alterar explicitamente, convertor converter o tipo de dados existentes que você importou num modelo de dados.
Importante
DAX not suporta o uso do tipo de dados variante. Portanto, ao importar os dados do or para um modelo de dados, espera-se que a informação em cada coluna seja geralmente de um tipo de dado consistente.
Algumas funções retornam valores escalares values, incluindo cadeias de caracteres, enquanto outras funções trabalham com números, tanto inteiros quanto números reais and, bem como datas or e horas and. O tipo de dados necessário para cada função é descrito na seção DAX funções.
Você pode usar tabelas contendo várias colunas and 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 and podem ser usadas como argumentos para outras funções.
Date and time
DAX armazena dateandtimevalues usando o tipo de dados datetime usado pelo Microsoft SQL Server. Datetime format usa um número de vírgula flutuante onde Datevalues correspondem à porção inteira que representa o número de dias desde 30 de dezembro de 1899. Time values correspondem à parte decimal de um datevalue onde Horas, minutos and segundos são representados por frações decimais de um day. DAX date and time funcionam implicitamente convert em argumentos para o tipo de dados datetime.
Observação
O exact máximo de DateTime value suportado pelo DAX é 31 de dezembro de 9999 00:00:00.
Date and time literal
A partir da versão de agosto de 2021 do Power BI Desktop, DAXdateand data e hora values pode ser especificado como literal no formatdt"YYYY-MM-DD"
, dt"YYYY-MM-DDThh:mm:ss"
, ordt"YYYY-MM-DD hh:mm:ss"
. Quando especificado como literal, o uso de DATE, TIME, DATEVALUE, TIMEVALUE funções na expressão not são necessários.
Por exemplo, a expressão a seguir usa DATEandTIME funções para filter 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 filter pode ser especificada como literal:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Observação
O literal do tipo data/hora DAXdateandformat é not suportado nas versões all do Power BI Desktop, Analysis Services, e do andPower Pivot no Excel. A nova and funcionalidade DAX atualizada é normalmente first introduzida no Power BI Desktop and e depois incluída no Analysis Services andePower Pivot no Excel.