- •6.050103 - «Програмна інженерія»
- •Списокскорочень
- •Семестровий модуль 1 Змістовний модуль 1 Системи підтримки ухвалення рішення лекція №1 Введення в бізнес-інтелект
- •Питання для самоперевірки
- •Лекція №2 Поняття сховища даних
- •Питання для самоперевірки
- •Змістовний модуль 2 olap-системи лекція №3 Аналітичні (olap) системи
- •Питання для самоперевірки
- •Лекція №4 Архітектура сховища даних
- •Питання для самоперевірки
- •Змістовний модуль 3 Багатомірні куби Лекція №5 Багатомірний куб. Основні поняття
- •Питання для самоперевірки
- •Лекція №6 Ієрархії вимірів. Схеми кубу «зірка» та «сніжинка»
- •Питання для самоперевірки
- •Лекція №7 Агрегація даних у багатомірному кубі
- •Лекція №8 Агреговані значення для різних видів вимірів
- •Питання для самоперевірки
- •Семестровий модуль 2 Змістовний модуль 4 Підготовка даних для сд лекція №9 Витяг, перетворення й завантаження даних
- •Питання для самоперевірки
- •Лекція №10 Очищення даних
- •Питання для самоперевірки
- •Лекція №11 Очищення даних (продовження)
- •Питання для самоперевірки
- •Змістовний модуль 5 Мова багатомірних виражень mdх лекція №12 Мова багатомірних виражень mdx. Основні поняття
- •Питання для самоперевірки
- •Лекція №13 Мова багатомірних виражень mdx. Запит до кубу
- •Питання для самоперевірки
- •Лекція №14 Функції мови багатомірних виражень mdx
- •Ці запити повертають різні результати.
- •Питання для самоперевірки
- •Змістовний модуль 6 Проблеми побудови сд лекція №15 Ключові показники ефективності
- •Питання для самоперевірки
- •Список літератури
Питання для самоперевірки
Які методи очищення даних Ви знаєте?
Перелічите етапи підготовки окремого джерела до інтеграції з іншими джерелами.
У чому можуть бути причини виникнення «брудних даних»?
Чи потрібно виконувати очищення даних у самих джерелах даних?
Методичні вказівки до лекції: [2, с. 31–37]; [6,с. 91–102, 189-251].
Вправи
Приведіть приклади виникнення брудних даних у предметній області «Поліклініка».
Приведіть приклади процедур очищення даних в предметній області «Деканат».
Змістовний модуль 5 Мова багатомірних виражень mdх лекція №12 Мова багатомірних виражень mdx. Основні поняття
Розглядаються наступні питання:
історія виникнення мови MDX;
задачі мови;
основні концепції мови MDX;
доступ до члена виміру;
поняття кортежу;
поняття множини (набору);
основні операції з множинами.
Мова MDX (Multi-Dimensional eXpressions – мова багатомірних виражень) була вперше представлена як складова OLE DB for OLAP в 1997 р. компанією Microsoft. Незабаром з’явилася комерційна реалізація мови в Microsoft OLAP Services 7.0 (1998 р.), потім – в Microsoft Analysis Services. Незважаючи на те, що MDX не є загальним стандартом, а тільки внутрішньою специфікацією Microsoft, вона була прийнята багатьма провідними розповсюджувачами технології OLAP. У їхньому числі розроблювачі серверних застосувань, такі, як Applix, Microstrategy, SAS, SAP, Whitelight, NCR, а також розроблювачі клієнтських застосувань: Panorama Software, Proclarity, AppSource, Cognos, Business Objects, Brio Technology, Crystal Reports, Microsoft Excel, Microsoft Reporting Services і інші. З появою XML for Analysis, у якому MDX була прийнята як стандартна мова запитів, все більше число компаній (у їхньому числі, наприклад, Hyperion Solutions), стали підтримувати MDX. Деякі компанії розширюють стандарт, щоб забезпечити додаткову функціональність, але передбачається, що всі компоненти таких розширень MDX розроблені відповідно до стандарту.
Задачі мови можна визначити в такий спосіб:
MDX «розуміє» багатомірну модель устрою даних (куб, вимір, міра, комірка);
мова дозволяє здійснювати навігацію по багатомірному просторі й визначеним над ним ієрархіям;
MDX потрібна не тільки розроблювачам і адміністраторам — вона може бути корисною практично всім користувачам аналітичних застосувань.
MDX має два режими. При використанні як вираження MDX дозволяє визначати багатомірні об'єкти й дані для обчислення значень, а також управляти ними. Як мова запитів вона використовується для добування даних з багатомірних баз даних.
Хоча мова запитів MDX використовує синтаксис, подібний до синтаксису мови SQL, ці мови значно відрізняються.
Основні концепції
Кожний вимір має одну або кілька ієрархій, а кожна ієрархія містить один або кілька рівнів. Кожна ієрархія виміру містить один або кілька елементів, називаних членами (members). Кожний член відповідає одному або декільком входженням цього значення в базову таблицю вимірів.
Простір куба – це сукупність елементів ієрархій вимірів куба з мірами куба. Тому простір куба визначається комбінаторним сполученням всіх елементів ієрархії виміру в кубі й мер куба й визначає максимальний розмір куба. Важливо мати на увазі, що цей простір включає всі можливі сполучення елементів ієрархії виміру, навіть сполучення, які можуть здатися неможливими в реальному світі, наприклад сполучення, де містом є Париж, а країнами — Англія, Іспанія, Японія або Індія, і т.д.
Поняття автоматичної перевірки існування обмежує простір куба комірками, які дійсно існують. Елементи ієрархії виміру можуть не існувати з елементами іншої ієрархії у тому же вимірі.
Наприклад, простір куба, що містить ієрархію Місто, ієрархію Країна й міру ОбсягПродажу, включає тільки ті елементи, які існують один з одним. Наприклад, якщо ієрархія Місто містить елементи Київ, Одеса, Москва, Тула й Краків, а ієрархія Країна містить країни Україна, РФ, Польща, то простір куба не містить комірку на перетинанні елементів Москва й Україна.
Запит до неіснуючих комірок повертає значення NULL.
Об'єкт Measures (міри), по суті, являє собою спеціальний вимір, що є набором мір.
Доступ до члена виміру
Можна одержати доступ до члена виміру за допомогою імені цього виміру, імені ієрархії й імені рівня. Наприклад:
[Місце]. [Ієрархія_Місце].[Україна].[Одеса].[Проспект Гагаріна].[будинок №10].[квартира №123],
[Місце]. [Ієрархія_Місце].[Україна].[Одеса]
У наведених прикладах використаний докладний запис:
[<Вимір>].[<Ієрархія>].[<Член верхнього рівня>]. … ... . [<Член нижнього рівня>]
У деяких випадках унікальні в межах виміру елементи такого запису можна опускати.
Наприклад, якщо перший квартал кожного року називається Q1, то такий член виміру не можна опускати, необхідно буде уточнити вираження MDX, використовуючи ім'я рівня. Якщо все-таки використовувати даний формат звертання до члена ієрархії, MDX завжди буде витягати член Q1 для першого із представлених в ієрархії років.
Можна організувати кілька ієрархій для одного виміру, наприклад:
[Дата].[Ієрархія1].[<Рік>].[<Місяць>].[<Число>] і
[Дата].[Ієрархія2].[<№ тижня>].[<День тижня>]
У випадку єдиної ієрархії на неї можна послатися по імені виміру, тобто:
[Дата].[Ієрархія1].Members еквівалентно [Дата].Members ,
[Місце].[Ієрархія_Місце].[Міста].Members еквівалентно [Місце].[Міста].Members .
Кожному рівню ієрархії (Level) привласнене своє ім'я. Імена рівнів застосовуються в конструкціях виду:
[<Вимір>].[<Ієрархія>].[<Рівень>].Members .
Наприклад: [Дата].[ Ієрархія1].[Місяця].Members - всі можливі місяця;
[Місце].[Ієрархія_Місце].[Вулиці].Members - всі вулиці, незалежно від країни й міста.
Імена вимірів, ієрархій, рівнів і членів обов'язково потрібно брати у квадратні дужки, якщо в ім'ї зустрічається пробіл, цифра або ім'я являє собою ключове слово MDX.
Таким чином, у МDХ існують три способи посилання на об'єкти вимірів, ієрархій, рівнів і елементів:
по імені;
по повному імені;
по унікальному імені.
Для визначення члена, посилання на який виконується по імені, сервер повинен пройти по всіх вимірах і всіх їхніх ієрархіях у пошуку елемента із заданим ім'ям. Це вимагає великої кількості ресурсів, особливо коли елементи виміри зберігаються в реляційній базі даних (ROLAP-виміри). Крім того, посилання на об'єкт по імені можуть привести до неоднозначних результатів, наприклад, коли елементи з однаковими іменами існують у різних вимірах, наприклад, елемент Україна існує у вимірі Клієнт і у вимірі Магазин.
Посилання на об'єкти по повному імені швидше, ніж посилання на об'єкти по їхніх іменах. Вона працює добре для вимірів, ієрархій і рівнів, але має недоліки при використанні для посилання на елемент. Якщо повне ім'я створене з'єднанням імен батьків елемента, елемент перестає бути мобільним. Повне ім'я стане неправильним, якщо елемент перейде від одного батька до іншого. Якщо розглядати покупця в ієрархії Покупці, який може переїхати жити в інше місто, і ім'я елемента, що його представляє, поміняється.
Третій спосіб посилання на об'єкти складається у використанні їхніх унікальних імен. Сервер привласнює унікальне ім'я кожному виміру, ієрархії, рівню й елементу. Клієнтськезастосування, що генерує МDХ, або програміст, що пише запит, може одержувати унікальне ім'я об'єкта, використовуючи опис схеми або з результатів іншого запиту.
Існують досить складні правила для генерації унікальних імен. Постачальники, що підтримують МDХ, можуть мати різні алгоритми для генерації унікальних імен. Тому при написанні запитів унікальні імена повинні запитуватися із сервера, наприклад, за допомогою функції UniqueName
Якщо у вибірці обрано осей менше, ніж кількість вимірів у кубі, не задані значення атрибутів призначаються.
У кожного виміру існує член за замовчуванням. Як правило, у ролі Default Member виступає єдиний член спеціального рівня ієрархії [All], автоматично створюваного при створенні виміру. Цей рівень містить сукупні результати по всім вимірі.
Вказівка на член за замовчуванням можна записати за допомогою вираження DefaultMember:
[Клієнти].DefaultMember .
Якщо рівень [All] відсутній, у його ролі виступає перший член наступного рівня.
У деяких системах членом за замовчуванням можна призначити будь-який член або MDX-вираження виміру.
Оскільки сукупність мер ([Measures]) теж є одним з вимірів, те й серед мір є елемент за замовчуванням.
Кортеж (tuple) – це набір членів одного або декількох різних вимірів. Кортеж однозначно визначає зріз даних у кубі. Кортеж представлений членами вимірів куба даних (по одному члену з кожного виміру), розділеними комами. Кортеж указує на конкретнукомірку або набір комірок усередині куба. Кортежі задаються за допомогою круглих дужок.
Приклади:
([Місце].[Україна].[Київ].[вулиця Хрещатик], [Піл].[Ж], [Тип місця].[Місце проживання] ) - усі жінки, що живуть на вулиці Хрещатик у Києві;
([Місце].[Україна].[Харків], [Тип місця].[Місце народження] ) – всі клієнти, що народилися в Харкові.
Кортеж необов'язково повинен явно містити члени всіх вимірів куба даних.
Елемент кортежу повинен належати різним ієрархіям.
([2010], [Франція]) - правильно
([США], [Франція]) - неправильно, елементи кортежу з однієї ієрархії
Порядок, у якому представлені члени вимірів у кортежі, не має значення.
Кортеж, представлений єдиним членом, називають простим кортежем. Простий кортеж можна не брати в круглі дужки. Наприклад, кортеж ([Клієнт].[Стана].[Україна]) є простим кортежем і може бути представлений у вигляді [Клієнт].[Країна].[Україна] або просто Клієнт.Країна.Україна.
Множина (або набір) (set) – це сукупність (об'єднання) кортежів, певних з використанням однакової кількості тих самих вимірів.
Приклади:
{[Дата].[1980].[Січень], [Дата].[1980].[Лютий] } – всі клієнти, що народилися в січні або в лютому 1980 р.
{([Місце].[Україна].[Одеса], [Тип місця].[Місце проживання], [Дата народження].[1980]), ([Місце].[Україна].[Херсон], [Тип місця].[Місце проживання], [Дата народження].[1980])} – всі клієнти 1980 року народження, що проживають в Одесі або в Херсоні.
Множинаукладається у фігурні дужки.
Кортежі (Клієнт.Країна.Україна, [Товар].[Категорія].[Продукти]) і (Клієнт.Країна.РФ, [Дата].[2010].1 квартал]) не можна об'єднати для формування множини. Хоча обоє вони засновані на двох вимірах, але збігається тільки перше із включених у їхній состав вимірів (Клієнт).
Множина може містити нуль, один або кілька кортежів. Множина із нульовою кількістю кортежів називається порожньою множиною. Порожній множині відповідає запис { }.
Множина може містити кортежі, що дублюються.
{ Клієнт.Країна.Україна, Клієнт.Країна.РФ, Клієнт.Країна.Україна }
Перетинання кортежу або множини з якою-небудь мірою дає значення міри на даній множині.
Набір всіх членів в інтервалі задається за допомогою двокрапки:
{[Час].[2007]:[Час].[2010]}
Основні операції з множинами
Множина або набір в MDX – це множина у математичному розумінні, і всі закони, установлені алгеброю множин, можуть бути застосовані до цих множин.
Існують три операції алгебри множин і дві основні операції з множинами, які дозволяють створювати нові множини із уже існуючих множин:
Об'єднання (Union);
Перетинання (Intersect);
Різниця (Except);
Перехресне з'єднання (Crossjoin);
Добування (Extract)
Union поєднує дві й більше множини однієї розмірності в одна множину. Результуюча множина містить всі кортежі з кожної множини. Якщо кортеж існує в обох первісних множинах, у новумножину Union він буде доданий тільки один раз – повторюваний кортеж доданий не буде. Операція Union ({[Іванов],[Петров]},{[Сидоров]}) повертає множину
{Іванов, Петров, Сидоров}
Union являє собою еквівалент операції додавання, тому для створення об'єднання множин також можна використовувати оператор +.
{[Іванов],[Петров]}+{[Сидоров]}
Крім того, MDX підтримує синтаксис операції Об'єднання (Union) з використанням фігурних дужок, але ця операція не є точним еквівалентом функції Union або оператора +. Якщо дві множини, поєднувані з використанням фігурних дужок, містять повторювані кортежі, у результуючій множині дублікати зберігаються.
{{[Іванов],[Петров],[Сидоров]},{[Сидоров]}} повертає наступну множину
{Іванов, Петров, Сидоров, Сидоров}
Перетинання (Intersect) створює нову множину, що містить кортежі, загальні для двох множин.
Наприклад, код
INTERSECT({[Шевченко], [Іванов], [Петров]}, {[Іванов], [Петров],[Сидоров]})
поверне наступнумножину {Іванов, Петров}
Різниця (Ехсерt) знаходить розходження між двома множинами. Ця операція створює нову множину, що містить елементи, що є елементами однієї множини, але не елементами іншого.
Наприклад, код
Except({[Іванов],[Петров],[Сидоров]},{[Сидоров]}} поверне наступну множину {Іванов, Петров}.
Тому що операція Ехсерt еквівалентна операторові вирахування, її можна записати за допомогою знака «-»:
{[Іванов],[Петров],[Сидоров]}-{[Сидоров]}
Перехресне з'єднання (Crossjoin) генерує множину, що містить всі можливі комбінації двох (або більше) множин зі збереженням у результуючій множині порядку ієрархій, використаних в оригінальних множинах.
Ця функція часто використовується для проектування елементів з різних ієрархій на ту саму вісь куба. Операція Crossjoin еквівалентна операторові множення.
Наприклад, код:
CROSSJOIN({[2009], [2010]},{[Україна] , [РФ], [Польща]})
поверне наступнумножину:
{([2009],[Україна]),([ 2009],[РФ]),([2009],[Польща]), ([2010], [Україна]), ([2010], [РФ]), ([2010], [Польща])}
І цей код:
{[2009],[2010]}*{[Україна],[РФ],[Польща]}
поверне та ж сама множину.
Добування (Extract) створює множину, що містить кортежі тільки заданої ієрархії. Ця операція протилежна Crossjoin. Наприклад, код:
Extract(CROSSJOIN({[2009],[2010]},{[Україна],[РФ], [Польща]}), [Дата].[Рік])
поверне наступнумножину:
{[2009],[2010]}
