DAX consultas
Clientes de relatórios como Power BI and Excel executam consultas DAX sempre que visuais são exibidos em um relatório, or um campo adicionado a uma tabela, and essas consultas DAX se ajustam quando um filter é aplicado. O do analisador de desempenho
Usando DAX de exibição de consulta no Power BI Desktop orEscrever DAX consultas em Power serviço de BI, você pode criar and executar suas próprias consultas de DAX. Com o Microsoft Fabric, você pode aumentar ainda mais sua produtividade com o Copilot para escrever consultas DAX em DAX modo de exibição de consulta do Desktop or Web. Além das ferramentas de BI Power, as consultas de DAX podem ser executadas em blocos de anotações do Fabric usando de link semântico para ler dados de modelos semânticos com python and com a API REST Execute Queries, também disponível no Power Automate. Outras ferramentas, como SQL Server Management Studio (SSMS), Power BI Report Builderand ferramentas de código aberto, como o DAX Studio, também permitem criar and executar consultas DAX.
DAX consultas retornam resultados como uma tabela right dentro da ferramenta, permitindo que você crie and teste rapidamente o desempenho de suas fórmulas de DAX em medidas or simplesmente visualize os dados em seu modelo semântico. INFO and INFO. As funções VIEW DAX também podem obter informações sobre seu modelo semântico, como uma lista de tabelas, colunas, medidas and muito mais.
Antes de aprenderes sobre consultas, é importante que tenhas uma compreensão sólida dos fundamentos do DAX. If ainda não o fez, não deixe de conferir DAX visão geral.
Palavras-chave
DAX consultas têm uma sintaxe simples composta por apenas uma palavra-chave necessária, EVALUATE. EVALUATE é seguido por uma expressão de tabela, como uma função DAXor nome da tabela, que quando executado gera uma tabela de resultados. As expressões de tabela que geram uma tabela de resultados incluem:
- Funções comuns de DAX que geram uma tabela, como SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and muitas outras, trabalham com EVALUATE para produzir uma tabela de resultados.
- As tabelas no modelo, quando referenciadas por nome, funcionam com EVALUATE para gerar uma tabela de resultados mostrando os dados na tabela. Por exemplo, EVALUATE 'Nome da tabela' pode ser executado como uma consulta DAX.
- As medidas no modelo or qualquer fórmula DAX, que retornam uma valueescalar, trabalham com EVALUATE para mostrar a tabela value como resultado quando fechadas em chaves encaracoladas. Por exemplo, EVALUATE {[Total Sales]}orEVALUATE {COUNTROWS('Sales')} pode ser executado como uma consulta DAX. Estes são chamados construtores de tabela.
Existem várias palavras-chave opcionais específicas para DAX consultas: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABELA and COLUNA.
EVALUATE (Obrigatório)
No nível mais básico, uma consulta DAX é uma instrução EVALUATE
que contém uma expressão de tabela. Pelo menos uma instrução EVALUATE é exigida; contudo, uma consulta pode conter qualquer número de EVALUATEstatements.
EVALUATE Sintaxe
EVALUATE <table>
EVALUATE Parâmetros
Prazo | Definição |
---|---|
table |
Uma expressão de tabela. |
EVALUATE Exemplo
EVALUATE
'Sales Order'
Retorna all linhas e and colunas da tabela Encomenda de Venda, como tabela resultante. Isso pode ser limitado com o uso de TOPNorFILTER, and ordenados com ORDER BY.
ORDER BY (Opcional)
A palavra-chave opcional ORDER BY
define mais uma coluna or na expressão de consulta or usada para classificar os resultados da consulta. Qualquer expressão que possa ser avaliada para cada linha do resultado é válida. Qualquer coluna na própria consulta também é válida.
A propriedade Classificar por coluna em modelos semânticos not se aplica a DAX resultados da consulta. If uma coluna deve ser classificada por uma coluna diferente no modelo, como no caso de Month Name, a classificação por coluna também deve ser incluída na consulta DAX a ser usada no ORDER BY.
ORDER BY Sintaxe
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
ORDER BY Parâmetros
Prazo | Definição |
---|---|
expression |
Qualquer expressão DAX que retorne um único escalar value, incluída numa coluna or da consulta DAX. |
ASC |
(padrão) Ordem de classificação crescente. |
DESC |
Ordem de classificação decrescente. |
ORDER BY Exemplo
EVALUATE
SUMMARIZECOLUMNS(
// Group by columns
'Date'[Month Name],
'Date'[Month of Year],
'Product'[Category],
// Optional filters
FILTER(
VALUES('Product'[Category]),
[Category] = "Clothing"
),
// Measures or explicit DAX formulas to aggregate and analyze the data by row
"Orders", [Orders],
"Avg Profit per Order", DIVIDE(
[Total Sales Profit],
[Orders]
)
)
// DAX queries do not use sort order defined in Power BI,
// sort by columns must be included in the DAX query to be used in order by
ORDER BY 'Date'[Month of Year] ASC
Devolve as ordens de vestuário andaverage, com lucro por ordem de month, em ordem crescente de month, como tabela de resultados.
TOPN not escolhe o número especificado de linhas a serem retornadas com base na ordem de classificação especificada em ORDER BY. Em vez disso, TOPN tem sua própria sintaxe para especificar opcionalmente uma classificação antes que as 100 principais linhas sejam retornadas. ORDER BY classifica apenas a tabela de resultados retornada por TOPN.
EVALUATE
TOPN(
100,
'Sales Order',
// The way the data is sorted before the top 100 rows are selected
'Sales Order'[SalesOrderLineKey], ASC
)
// The way the data is sorted for the results
ORDER BY
'Sales Order'[Sales Order] ASC,
'Sales Order'[Sales Order Line] ASC
Retorna as 100 principais ordens de venda classificadas por SalesOrderLienKey crescente e, em seguida, classifica os resultados first por ordem de venda e, em seguida, por linha de ordem de venda.
START AT (Opcional)
A palavra-chave START AT
opcional é usada dentro de uma cláusula ORDER BY
. Ele define o value em que os resultados da consulta começam.
START AT Sintaxe
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
START AT Parâmetros
Prazo | Definição |
---|---|
value |
Uma constante value. Não pode ser uma expressão. |
parameter |
O nome de um parâmetro em uma instrução XMLA prefixada com um caractere @ . |
START AT Comentários
Os argumentos de START AT têm uma correspondência um a um com as colunas da cláusula ORDER BY. Pode haver tantos argumentos na cláusula START AT como na cláusula ORDER BY, mas not mais. O argumento first no START AT define o value inicial na coluna 1 das colunas ORDER BY. O argumento second no START AT define o value inicial na coluna 2 das colunas ORDER BY dentro das linhas que atendem aos critérios firstvalue para a coluna 1.
START AT Exemplo
EVALUATE
'Sales Order'
ORDER BY 'Sales Order'[Sales Order] ASC
// Start at this order, orders before this order will not be displayed
START AT "SO43661"
Devolve all colunas da tabela Pedido de Venda, ordenadas de forma crescente por Pedido de Venda, começando em SO43661. As linhas anteriores a esta ordem de venda not são incluídas na tabela de resultados.
DEFINE (Opcional)
A palavra-chave DEFINE
opcional introduz uma or mais definições de entidade calculadas que existem apenas para o duration da consulta. Ao contrário de EVALUATE
, só pode haver um bloco DEFINE
com uma definição or adicional em uma consulta DAX.
DEFINE
deve preceder a instrução firstEVALUATE
and é válida para allEVALUATEstatements na consulta. As definições podem ser variáveis, medidas, tabelas1, and colunas1. As definições podem fazer referência a outras definições que aparecem antes or depois da definição atual. Pelo menos uma definição é necessária if a palavra-chave DEFINE
for incluída em uma consulta.
DEFINE MEASURE
é um cenário comum para construir novas medidas or editar medidas existentes em um modelo semântico. Quando o measure já existir no modelo, a consulta DAX usará a fórmula de measureDAX definida na consulta. Isso é útil para testar medidas com uma consulta DAX antes de atualizar o modelo.
DEFINE MEASURE
também é útil criar análises adicionais com fórmulas DAX para uma consulta DAX específica, onde você pode not ter permissão para adicionar um modelo measureornot é necessário tê-lo no modelo.
DEFINE Sintaxe
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <table expression>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
DEFINE Parâmetros
Prazo | Definição |
---|---|
Entity |
MEASURE, VAR, TABELA1, or COLUNA1. |
name |
O nome de um measure, var, definição da coluna da tabela or. Não pode ser uma expressão. O nome not tem de ser único. O nome existe apenas para o duration da consulta. |
expression |
Qualquer expressão DAX que retorne uma tabela escalar orvalue. A expressão pode usar qualquer uma das entidades definidas.
If houver a necessidade de convert uma expressão escalar em uma expressão de tabela, envolva a expressão dentro de um construtor de tabela com chaves {} or use a função ROW() para retornar uma única tabela de linha. |
[1]Cuidado: As definições de COLUNA com escopo de consulta na TABELA and destinam-se apenas para uso interno. Embora possa utilizar expressões TABELA define e COLUNA and numa consulta sem sintaxe error, elas podem produzir erros de tempo de execução and e não são recomendadas not.
DEFINE Comentários
Uma consulta DAX pode ter múltiplos EVALUATEstatements, mas pode ter apenas uma instrução DEFINE. As definições na instrução DEFINE podem ser aplicadas a qualquer EVALUATEstatements na consulta.
É necessária pelo menos uma definição numa declaração DEFINE.
Measure definições para uma consulta substituem as medidas do modelo que têm o mesmo nome, mas são utilizadas apenas dentro da consulta. Eles not afetarão o modelo measure.
Os nomes VAR têm restrições únicas. Para saber mais, consulte VAR - Parâmetros.
DEFINE Exemplo
DEFINE
VAR _firstyear = MIN('Date'[Fiscal Year])
VAR _lastyear = MAX('Date'[Fiscal Year])
TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
EVALUATE
'Unbought products'
EVALUATE
{[Unbought products]}
Retorna a tabela definida na consulta DAX para mostrar produtos não comprados com uma coluna definida adicional fazendo referência a variáveis definidas. Um measure também é definido and avaliado para count as linhas de produtos não comprados.
DEFINE
MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
COUNTROWS(Customer),
FILTER(
'Sales',
[Orders] > 0
)
)
MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
[Orders],
[Customers],
0
)
EVALUATE
SUMMARIZECOLUMNS(
'Date'[Fiscal Year],
"Orders", [Orders],
"Customers", [Customers],
"Orders per Customer", [Orders per Customer]
)
Retorna uma tabela que avalia três medidas definidas para mostrar os resultados por exercício fiscal year. All medidas também existem no modelo, and Pedidos por Cliente é modificado na consulta DAX.
Parâmetros em consultas DAX
Uma instrução de consulta DAX bem definida pode ser parametrizada and, e depois usada ao longo de and com apenas alterações no parâmetro values.
O método
Faça referência aos parâmetros XMLA prefixando o nome do parâmetro com um caractere @
. Qualquer lugar na sintaxe onde um value é permitido, o value pode ser substituído por uma chamada de parâmetro.
All parâmetros XMLA são digitados como texto.
Importante
Os parâmetros definidos na seção de parâmetros andnot usados no elemento <STATEMENT>
generate numa resposta error no XMLA.
Em XMLA, os parâmetros usados andnot estão definidos no elemento <Parameters>
generate como uma resposta error.