Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kurs.rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
23.54 Mб
Скачать

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

Понятие множества в 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) используется для сортировки кортежей по множеству. При необходимости можно осуществить сортировку по возрастанию или убыванию значений параметров с сохранением иерархичности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]