Поделиться через


Базовый запрос многомерных выражений (многомерные выражения)

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

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

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

  • Число осей, которое должно содержаться в результирующем наборе. В многомерном запросе можно указать до 128 осей.

  • Набор элементов или кортежей, указываемых на каждой оси запроса многомерных выражений.

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

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

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

ПримечаниеПримечание

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

Синтаксис инструкции 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> ]

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

Сравнение синтаксиса инструкции многомерных выражений SELECT с синтаксисом SQL

Формат синтаксиса для инструкции многомерных выражений SELECT сходен с синтаксисом ее аналога в SQL. Тем не менее в нем имеется несколько принципиальных отличий.

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

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

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

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

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

В следующем примере показан базовый запрос многомерных выражений на основе инструкции 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 задает оси запроса как элементы Sales Amount и Tax Amount в измерении Measures и как элементы 2002 и 2003 в измерении Date.

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

  • Предложение WHERE определяет ось среза как элемент Southwest измерения Sales Territory.

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

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

Более подробные примеры см. в разделах Определение содержимого оси запроса (многомерные выражения)и Определение содержимого оси среза (многомерные выражения).