Consultas DAX
Clientes de relatórios como Power BI e Excel executam consultas DAX sempre que um campo é colocado em um relatório ou quando um filtro é aplicado. Usando o SQL Server Management Studio (SSMS), o Construtor de Relatórios do Power BI e ferramentas de código aberto como o DAX Studio, você pode criar e executar suas próprias consultas DAX. As consultas DAX retornam resultados como uma tabela diretamente na ferramenta, permitindo que você crie e teste rapidamente o desempenho de suas fórmulas DAX.
Antes de aprender sobre consultas, é importante que você tenha uma sólida compreensão dos conceitos básicos do DAX. Se ainda não o fez, certifique-se de verificar a visão geral do DAX.
Palavras-chave
As consultas DAX têm uma sintaxe simples composta por apenas uma palavra-chave necessária, EVALUATE, e várias palavras-chave opcionais: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE e COLUMN. Cada palavra-chave define uma instrução usada para a duração da consulta.
AVALIAR (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 AVALIAR.
AVALIAR sintaxe
EVALUATE <table>
AVALIAR Parâmetros
Termo | Definição |
---|---|
tabela | Uma expressão de tabela. |
Exemplo AVALIAR
EVALUATE
'Internet Sales'
Retorna todas as linhas e colunas da tabela Vendas pela Internet, como uma tabela.
ENCOMENDAR POR (Opcional)
A palavra-chave opcional ORDER BY define uma ou mais expressões usadas para classificar os resultados da consulta. Qualquer expressão que possa ser avaliada para cada linha do resultado é válida.
ENCOMENDAR POR Sintaxe
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
ORDER BY Parâmetros
Termo | Definição |
---|---|
expressão | Qualquer expressão DAX que retorna um único valor escalar. |
A | (padrão) Ordem de classificação crescente. |
DESC | Ordem de classificação decrescente. |
ENCOMENDAR POR Exemplo
EVALUATE
'Internet Sales'
ORDER BY
'Internet Sales'[Order Date]
Devolve todas as linhas e colunas da tabela Vendas pela Internet, por ordem crescente por Data da Encomenda, como uma tabela.
START AT (Opcional)
A palavra-chave opcional START AT é usada dentro de uma cláusula ORDER BY. Ele define o valor no qual os resultados da consulta começam.
COMEÇAR EM Sintaxe
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
START AT Parâmetros
Termo | Definição |
---|---|
valor | Um valor constante. Não pode ser uma expressão. |
parâmetro | O nome de um parâmetro em uma instrução XMLA prefixada com um @ caractere. |
COMEÇAR EM Comentários
Os argumentos START AT têm uma correspondência um-para-um com as colunas na cláusula ORDER BY. Pode haver tantos argumentos na cláusula START AT como existem na cláusula ORDER BY, mas não mais. O primeiro argumento em 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.
COMEÇAR NO Exemplo
EVALUATE
'Internet Sales'
ORDER BY
'Internet Sales'[Sales Order Number]
START AT "SO7000"
Retorna todas as linhas e colunas da tabela Vendas pela Internet, em ordem crescente por Número da Ordem de Venda, começando em SO7000.
DEFINE (Opcional)
A palavra-chave DEFINE opcional introduz uma ou mais definições de entidade calculadas que existem apenas durante a consulta. As definições precedem a instrução EVALUATE e são válidas para todas as instruções EVALUATE na consulta. As definições podem ser variáveis, medidas, tabelas1 e 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.
DEFINIR Syntax
[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>) +
DEFINIR parâmetros
Termo | Definição |
---|---|
Entidade | MEDIDA, VAR, TABELA1 OU COLUNA1. |
nome | O nome de uma definição de medida, var, tabela ou coluna. Não pode ser uma expressão. O nome não precisa ser exclusivo. O nome existe apenas para a duração da consulta. |
expressão | 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 ROW() função 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.
DEFINIR Comentários
Uma consulta DAX pode ter várias instruções AVALI, mas pode ter apenas uma instrução DEFINI. As definições na instrução DEFINE podem ser aplicadas a qualquer instrução EVALUATE na consulta.
Pelo menos uma definição é necessária em uma instrução DEFINI.
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 do VAR têm restrições únicas. Para saber mais, consulte VAR - Parâmetros.
DEFINIR Exemplo
DEFINE
MEASURE 'Internet Sales'[Internet Total Sales] =
SUM ( 'Internet Sales'[Sales Amount] )
EVALUATE
SUMMARIZECOLUMNS (
'Date'[Calendar Year],
TREATAS (
{
2013,
2014
},
'Date'[Calendar Year]
),
"Total Sales", [Internet Total Sales],
"Combined Years Total Sales",
CALCULATE (
[Internet Total Sales],
ALLSELECTED ( 'Date'[Calendar Year] )
)
)
ORDER BY [Calendar Year]
Devolve as vendas totais calculadas para os anos de 2013 e 2014 e as vendas totais calculadas combinadas para os anos de 2013 e 2014, como uma tabela. A medida na instrução DEFINI, Internet Total Sales, é usada nas expressões Total Sales e Combined Years Total Sales.
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 Execute Method (XMLA) tem um elemento de coleção Parameters Element (XMLA) que permite que parâmetros sejam definidos e atribuídos um valor. Dentro da coleção, cada elemento Parameter Element (XMLA) define o nome do parâmetro e um valor para ele.
Faça referência a 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.