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.

Instrução DAX Evaluate

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.

DAX Avalie ordem por instrução

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.

DAX Avaliar pedido por declaração de número de ordem de venda

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.

DAX Avalie com definição de medida

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.

Instruções DAX
RESUMIRCOLUNAS
TREATAS
FILTRAR