Запрос MDX — основной запрос

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Базовый запрос многомерных выражений — это инструкция SELECT, наиболее часто используемая в многомерных выражениях. Понимая, как инструкция SELECT многомерных выражений должна указывать результирующий набор, какой синтаксис инструкции SELECT и как создать простой запрос с помощью инструкции SELECT, вы будете иметь четкое представление о том, как использовать многомерные выражения для запроса многомерных данных.

Указание результирующих наборов

В MDX оператор SELECT указывает результирующий набор, содержащий в себе подмножество многомерных данных, возвращаемых из куба. Чтобы определить набор результатов, запрос MDX должен содержать следующую информацию:

  • Количество осей, которое должно входить в результирующий набор данных. В запросе многомерных выражений (MDX) можно указать до 128 осей.

  • Набор элементов или кортежей для включения на каждой оси MDX-запроса.

  • Имя куба данных, задающего контекст MDX-запроса.

  • Набор элементов или кортежей для включения на оси среза. Дополнительные сведения о слайсере и осях запросов см. в разделе "Ограничение запросов" с помощью осей запросов и слайсера (MDX).

Чтобы определить оси запроса, куб, который будет запрашиваться, и ось среза, инструкция MDX SELECT использует следующие предложения:

  • Предложение SELECT, определяющее оси запроса инструкции MDX SELECT. Дополнительные сведения о построении осей запроса в предложении SELECT см. в разделе "Указание содержимого оси запроса (MDX)".

  • Предложение FROM, определяющее, какой куб запрашивается. Дополнительные сведения о предложении FROM см. в инструкции SELECT (многомерные выражения).

  • Необязательное предложение WHERE, определяющее, какие элементы или кортежи следует использовать на оси среза, чтобы ограничить возвращаемые данные. Дополнительные сведения о конструировании оси среза в разделе WHERE см. в разделе "Указание содержимого оси среза" (MDX).

Замечание

Дополнительные сведения о различных предложениях инструкции SELECT см. в инструкции SELECT (MDX).

Синтаксис инструкции SELECT

В следующем синтаксисе показана базовая инструкция SELECT, которая включает использование предложений SELECT, FROM и 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> ]  

Инструкция MDX SELECT поддерживает необязательный синтаксис, например ключевое слово WITH, использование функций многомерных выражений для создания вычисляемых элементов для включения в ось или оси среза, а также возможность возвращать значения определенных свойств ячейки в рамках запроса. Дополнительные сведения об операторе MDX SELECT см. в операторе SELECT (MDX).

Сравнение синтаксиса инструкции MDX SELECT с SQL

Формат синтаксиса инструкции MDX SELECT аналогичен синтаксису SQL. Однако существует несколько фундаментальных различий:

  • Синтаксис MDX различает наборы, заключая кортежи или элементы в фигурные скобки (символы { и }). Дополнительные сведения о членах, кортежах и синтаксисе наборов см. в разделе Работа с членами, кортежами и наборами (MDX).

  • Запросы MDX могут иметь 0, 1, 2 или до 128 осей в инструкции SELECT. Каждая ось ведет себя точно так же, в отличие от SQL, где существуют значительные различия между поведением строк и столбцов запроса.

  • Как и в SQL-запросе, предложение FROM называет источник данных для запроса многомерных выражений (MDX). Однако предложение MDX FROM ограничено использованием только одного куба. Сведения из других кубов можно получать по значению с помощью функции LookupCube.

  • Предложение WHERE описывает ось среза в запросе многомерных выражений. Он действует как невидимая, дополнительная ось в запросе, срезая значения, отображаемые в ячейках результирующий набор; в отличие от предложения SQL WHERE, он не влияет непосредственно на то, что отображается на оси строк запроса. Функциональность предложения SQL WHERE доступна через другие функции MDX, такие как функция FILTER.

Пример инструкции SELECT

В следующем примере показан базовый MDX-запрос, использующий оператор SELECT. Этот запрос возвращает результирующий набор, содержащий суммы продаж и налогов 2002 и 2003 для юго-западных территорий продаж.

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] )  

В этом примере запрос определяет следующие сведения результирующих наборов:

  • Предложение SELECT задает оси запроса членами измерений "Measures" по показателям "Сумма продаж" и "Сумма налога", а также членами измерения "Date" на 2002 и 2003 года.

  • Предложение FROM указывает, что источник данных — это куб Adventure Works.

  • Предложение WHERE определяет ось среза как юго-западную часть измерения "Территория продаж".

Обратите внимание, что в примере запроса также используются псевдонимы осей COLUMNS и ROWS. Также могли бы использоваться порядковые позиции для этих осей. В следующем примере показано, как MDX-запрос можно было бы записать, чтобы использовать порядковую позицию каждой оси:

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] )  

Более подробные примеры см. в разделе "Указание содержимого оси запросов (MDX)" и "Указание содержимого оси среза (MDX)".

См. также

Основные понятия MDX (службы Analysis Services)
Инструкция SELECT (многомерные выражения)