Compartilhar via


Consulta MDX – A consulta básica

Aplica-se a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

A consulta MDX (Multidimensional Expressions) básica é a instrução SELECT – a consulta usada com mais frequência no MDX. Entendendo como a instrução MDX SELECT deve especificar um conjunto de resultados, como é sua sintaxe e como criar uma consulta simples usando a instrução SELECT, você terá uma compreensão sólida de como usar a linguagem MDX para consultar dados multidimensionais.

Especificando um conjunto de resultados

Na linguagem MDX, a instrução SELECT especifica um conjunto de resultados que contém um subconjunto de dados multidimensionais retornados a partir de um cubo. Para especificar um conjunto de resultados, a consulta MDX deve conter as seguintes informações:

  • O número de eixos que você deseja que o conjunto de resultados contenha. É possível especificar até 128 eixos em uma consulta MDX.

  • O conjunto de membros ou tuplas a ser incluído em cada eixo da consulta MDX.

  • O nome do cubo que define o contexto da consulta MDX.

  • O conjunto de membros ou tuplas a ser incluído no eixo da segmentação de dados. Para obter mais informações sobre eixos de segmentação e consulta, consulte Restricting the Query with Query and Slicer Axes (MDX).

Para identificar os eixos de consulta, o cubo que será consultado e o eixo da segmentação de dados, a instrução MDX SELECT usa as seguintes cláusulas:

  • Uma cláusula SELECT que determina os eixos de consulta de uma instrução MDX SELECT. Para obter mais informações sobre a construção de eixos de consulta em uma cláusula SELECT, consulte Especificando o conteúdo de um eixo de consulta (MDX).

  • Uma cláusula FROM que determina qual cubo será consultado. Para obter mais informações sobre a cláusula FROM, consulte Instrução SELECT (MDX).

  • Uma cláusula WHERE opcional que determina quais membros ou tuplas usar no eixo da segmentação de dados para restringir os dados retornados. Para obter mais informações sobre a construção de um eixo de segmentação de dados em uma cláusula WHERE, consulte Especificando o conteúdo de um eixo de segmentação de dados (MDX).

Observação

Para obter informações mais detalhadas sobre as várias cláusulas da instrução SELECT, consulte Instrução SELECT (MDX).

Sintaxe da instrução SELECT

A sintaxe a seguir mostra uma instrução SELECT básica, incluindo o uso das cláusulas SELECT, FROM e WHERE:

[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]   
SELECT [ * | ( <SELECT query axis clause>   
    [ , <SELECT query axis clause> ... ] ) ]  
FROM <SELECT subcube clause>   
[ <SELECT slicer axis clause> ]  
[ <SELECT cell property list clause> ]  

A instrução MDX SELECT oferece suporte à sintaxe opcional, como a palavra-chave WITH, ao uso de funções MDX para criar membros calculados para inclusão no eixo ou no eixo da segmentação de dados e à capacidade de retornar os valores das propriedades da célula específica como parte da consulta. Para obter mais informações sobre a instrução MDX SELECT, consulte Instrução SELECT (MDX).

Comparando a sintaxe da instrução MDX SELECT com o SQL

O formato da sintaxe da instrução MDX SELECT é similar à sintaxe do SQL. No entanto, há várias diferenças fundamentais:

  • A sintaxe MDX distingue conjuntos por tuplas ou membros ao redor com chaves (os caracteres { e }.) Para obter mais informações sobre sintaxe de membro, tupla e conjunto, consulte Trabalhando com membros, tuplas e conjuntos (MDX).

  • As consultas MDX têm 0, 1, 2 ou até 128 eixos de consulta na instrução SELECT. Cada eixo se comporta exatamente da mesma maneira, diferentemente do SQL, onde há diferenças significativas entre o comportamento das linhas e das colunas de uma consulta.

  • Como com uma consulta SQL, a cláusula FROM nomeia a fonte dos dados para a consulta MDX. No entanto, a cláusula MDX FROM é restrita a um único cubo. Informações de outros cubos podem ser recuperadas valor a valor usando a função LookupCube.

  • A cláusula WHERE descreve o eixo da segmentação de dados em uma consulta MDX. Ela atua como um eixo extra, invisível na consulta, segmentando os valores que aparecem nas células do conjunto de resultados; diferentemente da cláusula WHERE do SQL, ela não afeta diretamente o que aparece nos eixos das linhas da consulta. A funcionalidade da cláusula WHERE do SQL está disponível por meio de outras funções MDX, como a função FILTER.

Exemplo de instrução SELECT

O exemplo a seguir mostra uma consulta MDX básica que usa a instrução SELECT. Ela retorna um conjunto de resultados que contém os valores de vendas e tributos de 2002 e 2003 da região sudoeste.

SELECT  
    { [Measures].[Sales Amount],   
        [Measures].[Tax Amount] } ON COLUMNS,  
    { [Date].[Fiscal].[Fiscal Year].&[2002],   
        [Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS  
FROM [Adventure Works]  
WHERE ( [Sales Territory].[Southwest] )  

Neste exemplo, a consulta define as seguintes informações do conjunto de resultados:

  • A cláusula SELECT define os eixos da consulta como os membros Valor de Vendas e Valor de Tributos da dimensão Medidas e os membros 2002 e 2003 da dimensão Data.

  • A cláusula FROM indica que a fonte de dados é o cubo Adventure Works.

  • A cláusula WHERE define o eixo do slicer como o membro Sudoeste da dimensão Região de vendas.

Observe que o exemplo de consulta também usa os aliases de eixo COLUMNS e ROWS. As posições ordinais desses eixos também poderiam ser usadas. O exemplo a seguir mostra como a consulta MDX poderia ter sido escrita para usar a posição ordinal de cada eixo:

SELECT  
    { [Measures].[Sales Amount],   
        [Measures].[Tax Amount] } ON 0,  
    { [Date].[Fiscal].[Fiscal Year].&[2002],   
        [Date].[Fiscal].[Fiscal Year].&[2003] } ON 1  
FROM [Adventure Works]  
WHERE ( [Sales Territory].[Southwest] )  

Para obter exemplos mais detalhados, consulte Especificando o conteúdo de um eixo de consulta (MDX) e Especificando o conteúdo de um eixo de segmentação de dados (MDX).

Consulte Também

Principais conceitos em MDX (Analysis Services)
Instrução SELECT (MDX)