Partilhar via


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 no BI Desktop pode mostrar essas consultas executá-las na visualização de consulta .

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:

  1. 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.
  2. 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.
  3. 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.

Captura de ecrã a mostrar como utilizar EVALUATE para uma consulta DAX na vista de consulta DAX do Power BI Desktop.

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.

Captura de ecrã a mostrar como utilizar ORDER BY para uma consulta DAX na vista de consulta DAX do Power BI Desktop.

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.

Captura de ecrã a mostrar como utilizar TOPNandORDER BY para uma consulta DAX na vista de consulta DAX do Power BI Desktop.

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.

Captura de ecrã a mostrar como utilizar ORDER BYandSTART AT para uma consulta DAX na vista de consulta DAX do Power BI Desktop.

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 firstEVALUATEand é 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.

Captura de ecrã a mostrar como utilizar DEFINE para uma consulta DAX na vista de consulta DAX do Power BI Desktop.

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.

Captura de ecrã a mostrar como utilizar DEFINEMEASURE para uma consulta DAX na vista de consulta DAX do Power BI Desktop.

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 Execute Method (XMLA) tem um elemento de coleção Parameters Element (XMLA) que permite que parâmetros sejam definidos atribuídos a um . Dentro da coleção, cada elemento Parameter Element (XMLA) define o nome do parâmetro and a value associado a ele.

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.

DAX statements SUMMARIZECOLUMNS