Лекция 12. Основы языка Multidimensional Expressions



Тема лекции посвящена основам языка многомерных запросов MDX (Multidimensional Expressions), предназначенного для доступа к данным в системах оперативной обработки данных (OLAP).

Цель лекции ­– изучение элементов синтаксиса, операций и функций, поддерживаемых языком программирования MDX.

 

Самым популярным языком для извлечения данных из реляционных БД является Язык Запросов (Structured Query Language, SQL). Однако этот язык не предназначен для работы с многомерными моделями данных. Для доступа к данным OLAP-систем компанией Microsoft разработан язык MDX (Multidimensional Expressions). В настоящее время MDX является промышленным стандартом и широко используется в клиентских приложениях оперативного анализа данных. Кроме того, MDX используется для определения вычислений в измерениях и кубах. Для реализации MDX-запросов можно использовать инструментальные средства SQL Server Management Studio [2].

Оператор SELECT

Язык запросов MDX  аналогично SQL является текстовым языком, в котором наиболее важным является оператор SELECT. Посредством этого оператора пользователь формулирует запрос и получает ответ. Оператор имеет следующий синтаксис:

 SELECT <определение результирующего многомерного пространства> FROM <исходное пространство> WHERE <ограничение результатов подпространством>.

В составе оператора три основных предложения:

• предложение SELECT, определяющее результат запроса;

• предложение FROM, определяющее источник данных;

• предложение WHERE, определяющее правила, ограничивающие результаты запроса подпространством данных.

Результатом MDX-запроса является многомерное подпространство в виде подкуба (subcube) с множеством осей (axes). При создании многомерного запроса указывается список осей. Количество осей в MDX-запросе теоретически не ограничено. Ограничение количества осей может быть связано только с количеством измерений в многомерной модели, характеристиками компьютера и возможностями пользовательского интерфейса. Для указания осей в операторе SELECT  используется предложение ON. Наиболее общим способом указания осей является задание номера оси в скобках за словом «axis»:

SELECT <содержимое оси> ON axis (0),

< содержимое оси> ON axis (1),

< содержимое оси> ON axis (2),

- - - - - - - - - - - - - - - - - - - - - - -,

< содержимое оси> ON axis ( n),

from <имя куба> .

Используемые оси могут иметь имена. Часто оси с номером 0 (axis (0)) называются столбцами (COLUMNS), с номером 1 (axis (1)) – строками (ROWS) , номерами 2 (axis (2)) – страницами (PAGES).

Алгебра множеств и операции с множествами

Понятие множества в MDX аналогично понятию множества в математике. Язык поддерживает пять операций, позволяющих создавать новые MDX-множества из существующих множеств:

Объединение (Union);

Пересечение (Intersect);

Исключение (Except);

Перёкрёстное соединение (Crossjoin);

Извлечение (Extract)

Операция  Объединение (Union) осуществляет формирование множества из двух множеств одной размерности. Сформированное множество содержит все кортежи из каждого множества. В случае присутствия кортежа в двух исходных множествах, в сформированное множество добавляется только один кортеж. Например, MDX-запрос

SELECT Union ({[Renton], [Redmond]}, {[Edmonds]})

ON COLUMNS FROM [Warehouse and Sales]

вернёт результат, приведённый на рисунке 4.1

 Рисунок 13.1 – Результат объединения множеств

Операция Пересечение (Interesect) создаёт новое множество, в котором содержатся кортежи, присутствующие в обоих исходных множествах. Например, MDX-запрос, имеющий вид:

SELECT INTERSECT ({[Burnaby], [Redmond], [Renton]},{Redmond],

[Renton], [Everett] })

ON COLUMNS FROM [Warehouse and Sales],

вернёт сформированное множество {Redmond, Renton}.

Рисунок 13.2 – Результат пересечения множеств

Операция Исключение (Except) создаёт множество с элементами множества, из которого исключены элементы, принадлежащие второму множеству. Код, приведённый ниже,

SELECT Except ({[Renton], [Redmond], [Burnaby]},{[Burnaby]})

ON COLUMNS FROM [Warehouse and Sales]

вернёт множество {[Renton], [Redmond]}, показанное на рисунке 4.3.

Рисунок 13.3 – Результат операции Исключение

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

SELECT CROSSJOIN ({[2008], [2009]}, {[FacultyA], [FacultyB], [FaultyC]})

ON COLUMNS  FROM [Warehouse University]

Вернёт следующее множество:

{([2008], [FacultyA]), ([2008], [FacultyB]), ([2008], [FacultyC]), ([2009],

[ FacultyA ]), ([2009], [ FacultyB ]), ([2009], [ FacultyC ])}.

Операция Извлечение (Extract) противоположна операции Перекрестного соединения и создаёт множество, содержащие кортежи заданной иерархии. Код, приведённый ниже,

SELECT Extract (CROSSJOIN ({ [2008], [2009]}, {[FacultyA], [FacultyB], [FaultyC]}), [Time], [Time]) ON COLUMNS FROM [Warehouse University]

вернёт следующее множество: {[2008], [2009]}.

Функции языка MDX

Чтобы создавать новые множества, необходимо иметь совокупность исходных множеств и программные средства. Язык MDX представляет набор функций для создания и работы с множествами. В дополнение к функциям для работы с множествами MDX содержит функции, оперирующие другими многомерными объектами: Измерения (Dimensions), Иерархия (Hierarchies), Уровни (Levels), Элементы (Members), Кортежи (Tuples) и Скалярные Значения (Scalar Values). Все функции MDX можно разделить на две категории: методы и свойства. Эти категории функций различаются синтаксисом.

Методы объединяет следующий синтаксис [1]:

    < function_ name>([< parameter>[, parameter …]]).

Свойства объединяет следующий синтаксис:

<object_name>, <property_name>[(<parameter>[, <parameter>…]]).

Независимо от принадлежности к категории функции MDX возвращают значения одного из типов: Измерение (Dimension), Иерархия (Hierarchie), Уровень (Level), Элемент (Member), Кортеж (Tuple) и Скалярное Значение (Scalar), Множество (Set). Все перечисленные функции могут передаваться в другие функции MDX в качестве параметров.

Функции для навигации в иерархиях используются для просмотра данных. Пример пользовательской иерархии приведён на рисунке 13.4. В этой иерархии элемент All – родитель элементов следующего уровня иерархии: Faculty A, Faculty B, Faculty C. Кафедры Sub-Faculty 1, Sub-Faculty 2 явля ются дочерними (children) для Faculty C. Кафедры также являются потомками (descendants) элемента All, который, в свою очередь, является их предком (ancestor). Функция Children позволяет просмотреть множество дочерних элементов выбранного элемента иерархии. Функция Descendants используется для анализа данных потомков выбранного элемента.

Функции фильтрации применяются для выделения из исходного множества по заданному критерию. Функция фильтрации Filter имеет два параметра: множество и критерий. Результат функции – выражение типа Boolean. При вычислении результата просматривается заданное множество. Для каждого кортежа во множестве вычисляется, указанное в качестве параметра, выражение. Если логическое выражение принимает значение Да (True), кортеж включается в результирующее множество. 

Функция для упорядочения данных (Order) используется для сортировки кортежей по множеству. При необходимости можно осуществить сортировку по возрастанию или убыванию значений параметров с сохранением иерархичности.

 

Краткие итоги

§ Для доступа к данным OLAP-систем разработан язык программирования MDX (Multidimensional Expressions). Язык MDX является промышленным стандартом и широко используется в клиентских приложениях оперативного анализа данных. 

§ Результатом MDX-запроса является многомерное подпространство в виде подкуба (subcube) с множеством осей (axes). При создании многомерного запроса указывается список осей. Количество осей в MDX-запросе теоретически не ограничено.

§  Понятие множества в языке MDX аналогично понятию множества в математике. Язык поддерживает пять операций для создания новые MDX-множества из существующих множеств: Объединение (Union); Пересечение(Intersect); Исключение (Except); Перёкрёстное соединение (Crossjoin); Извлечение (Extract).

§ В дополнение к операциям для работы с множествами MDX содержит функции, оперирующие многомерными объектами: Измерения (Dimensions), Иерархия (Hierarchies), Уровни (Levels), Элементы (Members), Кортежи (Tuples) и Скалярные Значения (Scalar Values). Все функции MDX разделяют на методы и свойства.

§ Перемещение по многомерным данным, хранящимся в Analysis Services, может выполняться с учётом иерархий измерений. Свойства иерархии представляются в MDX-запросе функцией навигации по иерархии.  

 

Контрольные вопросы

1. Результатом MDX-запроса является:

а) данные из строки таблицы базы данных;

б) значения меток на осях гиперкуба;

в) значения координат ячейки в многомерном пространстве;

г) многомерное подпространство в виде подкуба;

2. Для реализации MDX-запросов можно использовать:

а) службы SQL Server Data Mining;

б) службы SQL Server Integration Services;

в) службы SQL Server Management Studio;

г) службы SQL Server Reporting Services.

3. Операция Пересечение (Interesect) создаёт новое множество, в котором:

а) содержатся кортежи с элементами, присутствующими в обоих исходных кортежах;

б) содержатся кортежи с элементами, присутствующими в одном или обоих исходных кортежах;

в) содержатся кортежи, которые присутствуют в обоих исходных множествах;

г) содержатся кортежи, присутствующие в одном или обоих исходных множествах.

4. Операция Перекрестного соединения сохраняет:

а) порядок иерархий, имеющихся в исходных множествах;

б) иерархию атрибутов в измерениях многомерной модели;

в) кортежи элементов из обоих исходных множеств;

г) кортежи элементов, имеющиеся в исходных множествах.

5. Функция для упорядочения данных (Order) используется для сортировки:.

а) данных столбца по возрастанию или убыванию;

б) кортежей по множеству в порядке убывания или возрастания;

в) элементов кортежа в порядке убывания или возрастания;

г) элементов в строке реляционной таблицы данных.

 

Литература

1. Бергер А.Б. Microsoft SQL Server 2005 Analysis Services. OLAP и многомерный анализ данных / Бергер А.Б, Горбач И.В., Меломед Э.Л, Щербинин В.А., Степаненко В.П. / Под общ. Ред. А.Б. Бергера, И.В. Горбач. – СПб.: БХВ-Петербург, 2007. – 928 с.

2. Байдачный С. SQL Server 2005: Новые возможности для разработчиков / С. Байдачный, Д. Маленко, Ю. Лозинский. – М.: СОЛОН-Пресс, 2006. – 2008 с.

3. Microsoft SQL Server 2008: Data mining – интеллектуальный анализ данных. Пер. с англ. / Дж. Макленнен, Чж. Танг, Б. Криват. – БХВ-Петербург. 2009. – 720 с.

 

 

 


Дата добавления: 2018-10-26; просмотров: 326; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!