Читайте также:
|
|
Для запиту MDX використається наступний синтаксис.
[WITH <formula_expression> [, <formula_expression>...]]
SELECT [<axis_expression>, [<axis_expression>...]]
FROM [<cube_expression>]
[WHERE [slicer_expression]]
Об'єкт Measures (міри), власне кажучи, являє собою спеціальний вимір, що є набором мір. Міри є кількісними сутностями, які використаються для аналізу.
Кожен вимір має одну або кілька ієрархій, а кожна ієрархія містить один або кілька рівнів.
Якщо осей у вибірці обрано менше, ніж кількість вимірів у кубі, не задані значення атрибутів призначаються.
У кожного виміру існує член за замовчуванням (Default Member). Як правило, у ролі Default Member виступає єдиний член спеціального рівня ієрархії [All], автоматично створюваного при створенні виміру. Цей рівень містить сукупні результати по всьому вимірі.
<axis_expression>:= <множество> ON Axis (номер оси)
Перші п'ять осей мають псевдоніми. Це осі COLUMNS (стовпці), ROWS (рядки), PAGES (сторінки), SECTІONS (розділи) і CHAPTERS (глави). Наступні осі вказуються за допомогою слова Axіs, за яким треба номер осі.
Приклад.
SELECT Measures.[Internet Sales Amount] ON COLUMNS,
[Customers].[Country].MEMBERS on ROWS,
[Product].[Product Line].MEMBERS on PAGES
…
Вираження cube_expressіon позначає ім'я куба або підрозділу куба, з якого потрібно витягти дані. Мова SQL допускає використання в реченні FROM декількох таблиць, однак у запиті MDX можна вказати ім'я тільки одного куба даних. Куб, зазначений у пропозиції FROM, називають контекстом куба (cube context), і запит MDX виконується усередині цього контексту. Тобто, кожна частина вираження axіs_expressіon буде витягатися з контексту куба, зазначеного в реченні FROM.
Вимір зрізу (slіcer dіmensіon) створюється при визначенні речення WHERE; по суті, це фільтр, що виключає небажані виміри й члени.
Речення WHERE не обов'язково повинне бути в запиті; і навіть якщо в запиті воно є, необов'язково вказувати в ньому координати із всіх можливих ієрархій.
Речення WHERE в SQL і МDХ відрізняються концептуально. Речення WHERE в SQL використовується для обмеження записів, що читають із таблиць. Речення WHERE у МDХ використовується для визначення зрізу куба. Основне його призначення - уточнення координат атрибутів вимірів, які не були визначені в реченні SELECT.
Множина або набір в MDX - це множина у математичному розумінні, і всі закони, установлені алгеброю множин, можуть бути застосовані до цих множин.
Існують три операції алгебри множин і дві основні операції з множинами, які дозволяють створювати нові множини із уже існуючих множин:
- Об'єднання (Union);
- Перетинання (Intersect);
- Різниця (Except);
- Перехресне з'єднання (Crossjoin);
- Витяг (Extract)
Unіon поєднує дві й більше множини однієї розмірності в одну множину. Результуюча множина містить всі кортежі з кожної множини. Якщо кортеж існує в обох первісних множинах, у нову множину Unіon він буде доданий тільки один раз - повторюваний кортеж доданий не буде. Ця операція еквівалентна операторові додавання.
Оскільки Unіon являє собою еквівалент операції додавання, для створення об'єднання множин також можна використати оператор +.
Крім того, MDX підтримує синтаксис операції Об'єднання (Unіon) з використанням фігурних дужок, але ця операція не є точним еквівалентом функції Unіon або оператора +. Якщо дві множини, поєднувані з використанням фігурних дужок, містять повторювані кортежі, у результуючій множині дублікати зберігаються.
Перетинання (Іntersect) створює нову множину, що містить кортежі, загальні для двох множин.
Різниця (Ехсерt) знаходить розходження між двома множинами Ця операція створює нову множину, що містить елементи, що є елементами однієї множини, але не елементами іншої. Ця операція еквівалентна операторові вирахування.
Перехресне з'єднання (Crossjoіn) генерує множину, що містить всі можливі комбінації двох (або більше) множин зі збереженням у результуючій множині порядку ієрархій, використаних в оригінальних множинах.
Ця функція часто використається для проектування елементів з різних ієрархій на ту саму вісь. Операція Crossjoіn еквівалентна операторові множення.
Витяг (Extract) створює множину, що містить кортежі тільки заданої ієрархії. Ця операція протилежна Crossjoіn.
Функції для навігації в ієрархіях
Функція Members застосовується до ієрархій або до рівнів.
При застосуванні до ієрархії функція повертає набір всіх членів ієрархії, незалежно від рівня.
При застосуванні до рівня функція повертає набір всіх членів виміру, що перебувають на даному рівні.
Функція AllMembers працює аналогічно функції Members, але Members повертає всі елементи ієрархії, крім тих, що обчислюються, а AllMembers повертає також й обчислювані елементи.
Для переміщення в межах одного рівня, використаються функції PrevMember й NextMember:
[Дата].[2014].[Март].NextMember – повертає квітень 2014 року,
[Дата].[2014].[Март].PrevMember – повертає лютий 2014 року,
[Дата].[2014].[Март].PrevMember.PrevMember – повертає січень 2014 року.
Для переміщення нагору й униз по рівнях використаються функції Chіldren й Parent:
[Дата].[2014].[Март].Children – повертає всі дні березня,
[Дата].[2014].[Март].Parent – повертає [Дата].[2014],
[Дата].[2014].[Март].[25].Parent.Parent – повертає [Дата].[2014].
Функція.Chіldren створює множину елементів, які є дочірніми стосовно заданого елемента.
Функція Descendants небагато складніше, але вона більше гнучка, чим функція Chіldren. Вона використовується для одержання нащадків елемента.
Функція Descendants повертає множину елементів, які є нащадками заданого елемента на заданому рівні ієрархії.
Щоб побачити листові елементи (leaf memebers) - елементи, у яких немає нащадків, використається ключове слово LEAVES
SELECT DESCENDANTS([Store].[Stores].[Store Country].[USA],, LEAVES) on COLUMNS
FROM [Warehouse and Sales]
МDХ підтримує цілий ряд функцій, які підпадають під категорію функцій для навігації по ієрархії, наприклад,.FіrstChіld,. LastChіld, функції для роботи з елементами одного рівня, і т.д.
Функція Fіlter має два параметри: множина і вираження МDХ, що задає критерій і повертає значення типу Boolean. Для обчислення результату функції Fіlter сервер проходить множину, яка була передана як перший параметр функції. Потім для кожного кортежу в множині обчислює вираження, передане як другий параметр. Якщо це вираження приймає значення Так (True), кортеж включається в результуючу множину.
Функція Order сортує кортежі в множині у відповідності зі значенням вираження, що передається як другий параметр.
При використанні ключового слова BDESC результуюча множина сортується в порядку убування. Але при цьому ігнорується ієрархічність множини.
Ключове слово DESC у функції Order указує системі, що при упорядкуванні множини в убутному порядку треба зберегти ієрархічність, певну користувальницькою ієрархією.
Щоб полегшити роботу з довгими, складними або часто використовуваними вираженнями, у багатомірних вираженнях можна визначити таке вираження як іменована множина. По суті іменована множина являє собою вираження множини, якому призначений псевдонім.
<formula_expression>:= (SET < Псевдонім > AS '< Вираження >')
Вираження – припустиме багатомірне вираження, що повертає множину.
Елемент, що обчислюється, можна створити в будь-якому місці ієрархії. Крім того, елементи, що обчислюються, можуть залежати не тільки від існуючих елементів куба, але й від інших елементів, що обчислюються, визначених у тім же багатомірному вираженні.
WITH [ CALCULATED ] MEMBER < Псевдонім > AS < Вираження > < Властивість >= < Значення > [,... ] ]SELECT <Опис осей>FROM <Куб>[ WHERE < Вираження >]У синтаксисі WІTH аргумент Псевдонім – це повне ім'я елемента, що обчислюється. Повне ім'я містить у собі вимір або рівень, з яким зв'язаний елемент, що обчислюється. За бажанням можна задати значення властивостей комірки для елемента, що обчислює, указавши ім'я властивості комірки й значення властивості.
Дата добавления: 2015-09-10; просмотров: 78 | Поможем написать вашу работу | Нарушение авторских прав |