Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Clientes de relatórios como o Power BI e o Excel executam consultas de DAX sempre que elementos visuais são exibidos em um relatório ou em um campo adicionado a uma tabela, e essas consultas de DAX são ajustadas quando um filtro é aplicado. O analisador de desempenho DAX e até executá-las no modo de exibição de consulta DAX do Power BI Desktop.
Usando DAX modo de exibição de consultas no Power BI Desktop ou escrever consultas DAX no serviço Power BI, pode criar e executar as suas próprias consultas DAX. Com o Microsoft Fabric, pode aumentar ainda mais a sua produtividade com o Copilot para escrever DAX consultas no modo de visualização de consultas do desktop ou da web. Além das ferramentas do Power BI, as consultas podem ser executadas em blocos de anotações Fabric usando link semântico para ler dados de modelos semânticos com Python, e com a API REST Executar Consultas, também disponível no Power Automate. Outras ferramentas, como SQL Server Management Studio (SSMS), Construtor de Relatórios do Power BIe ferramentas de código aberto, como o DAX Studio, também permitem criar e executar consultas DAX.
DAX consultas retornam resultados como uma tabela dentro da ferramenta, permitindo que você crie e teste rapidamente o desempenho de suas fórmulas DAX em medidas ou simplesmente visualize os dados em seu modelo semântico. INFO e INFO.VIEW DAX: As funções podem também obter informações sobre o modelo semântico, como uma listagem de tabelas, colunas, medidas e muito mais.
Antes de aprenderes sobre consultas, é importante que tenhas uma compreensão sólida dos fundamentos do DAX. Se 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 DAX ou nome de 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, DATATABLEe 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 ou em qualquer fórmula DAX, que retornam um valor escalar, funcionam com EVALUATE para mostrar o valor como uma tabela de resultados quando colocadas entre chavetas. Por exemplo, EVALUATE {[Total Sales]} ou EVALUATE {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, TABLE e COLUMN.
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 é necessária, no entanto, uma consulta pode conter qualquer número de instruções EVALUATE.
EVALUATE Sintaxe
EVALUATE <table>
EVALUATE Parâmetros
| Prazo | Definição |
|---|---|
table |
Uma expressão de tabela. |
EVALUATE Exemplo
EVALUATE
'Sales Order'
Retorna todas as linhas e colunas da tabela de encomendas de vendas, como tabela de resultado. Isto pode ser controlado com o uso de TOPN ou FILTERe ordenado utilizando ORDER BY.
ORDER BY (Opcional)
A palavra-chave ORDER BY opcional define uma ou mais colunas na consulta ou expressões usadas 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 não se aplica aos resultados da consulta DAX. Se uma coluna deve ser classificada por uma coluna diferente no modelo, como no caso de Nome do Mês, 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 retorna um único valor escalar ou coluna incluída na 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 os pedidos de roupa e o lucro médio por pedido por mês, em ordem crescente, na forma de uma tabela de resultados.
TOPN não 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 primeiro 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 valor no qual 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 |
Um valor constante. 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 não mais. O primeiro argumento no START AT define o valor inicial na coluna 1 das colunas ORDER BY. O segundo argumento no START AT define o valor inicial na coluna 2 das colunas ORDER BY dentro das linhas que atendem ao primeiro valor da 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 todas as colunas da tabela Ordem de Venda, por ordem crescente de Ordem de Venda, iniciando em SO43661. As linhas anteriores a esta ordem de venda não são incluídas na tabela de resultados.
DEFINE (Opcional)
A palavra-chave DEFINE opcional introduz uma ou mais definições de entidade calculadas que existem apenas durante a consulta. Ao contrário EVALUATE, só pode haver um bloco DEFINE com uma ou mais definições em uma consulta DAX.
DEFINE devem preceder a primeira instrução EVALUATE e são válidas para todas as instruções EVALUATE na consulta. As definições podem ser variáveis, medidas, tabelas1e colunas1. As definições podem fazer referência a outras definições que aparecem antes ou depois da definição atual. Pelo menos uma definição é necessária se a palavra-chave DEFINE for incluída em uma consulta.
DEFINE MEASURE é um cenário comum para construir novas medidas ou editar medidas existentes em um modelo semântico. Quando a medida já existir no modelo, a consulta DAX usará a fórmula da medida DAX definida na consulta. Isso é útil para testar medidas com uma consulta DAX antes de atualizar o modelo.
DEFINE MEASURE também é útil para criar análises adicionais com fórmulas DAX para uma consulta DAX específica onde você pode não ter permissão para adicionar uma medida de modelo ou não é necessário tê-la no modelo.
DEFINE Sintaxe
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <virtual table definition>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
DEFINE Parâmetros
| Prazo | Definição |
|---|---|
Entity |
MEASURE, VAR, TABELA1, ou COLUNA1. |
name |
O nome de uma definição de medida, tabela, coluna ou variável. Não pode ser uma expressão. O nome não precisa ser exclusivo. O nome existe apenas durante a consulta. |
expression |
Qualquer expressão DAX que retorna uma tabela ou valor escalar. A expressão pode usar qualquer uma das entidades definidas. Se houver necessidade de converter uma expressão escalar em uma expressão de tabela, envolva a expressão dentro de um construtor de tabela com chaves {} ou use a função ROW() para retornar uma única tabela de linha. |
[1]Cuidado: As definições de TABELA e COLUNA com escopo de consulta destinam-se apenas para uso interno. Embora você possa definir expressões TABLE e COLUMN para uma consulta sem erro de sintaxe, elas podem produzir erros de tempo de execução e não são recomendadas.
DEFINE Comentários
Uma consulta DAX pode ter várias instruções EVALUATE, mas pode ter apenas uma instrução DEFINE. As definições na instrução DEFINE podem ser aplicadas a qualquer instrução EVALUATE na consulta.
É necessária pelo menos uma definição numa declaração DEFINE.
As definições de medida para uma consulta substituem as medidas do modelo com o mesmo nome, mas são usadas apenas dentro da consulta. Eles não afetarão a medida modelo.
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. Uma medida também é definida e avaliada para contar 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]
)
Devolve uma tabela que avalia três medidas definidas para mostrar os resultados por ano fiscal. Todas as medidas também existem no modelo, e Pedidos por Cliente é modificado na consulta DAX.
Parâmetros em consultas DAX
Uma instrução de consulta DAX bem definida pode ser parametrizada e, em seguida, usada repetidamente com apenas alterações nos valores dos parâmetros.
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 valor é permitido, o valor pode ser substituído por uma chamada de parâmetro. Todos os parâmetros XMLA são digitados como texto.
Importante
Os parâmetros definidos na seção de parâmetros e não usados no elemento <STATEMENT> geram uma resposta de erro no XMLA.
Os parâmetros usados e não definidos no elemento <Parameters> geram uma resposta de erro no XMLA.