O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
СИСТЕМИ ЗА ОНЛАЙН АНАЛИТИЧНА
ОБРАБОТКА НА ДАННИ (OLAP)
доц. д-р Цветанка Георгиева-Трифонова
СИСТЕМИ ЗА ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ
– СЪДЪРЖАНИЕ
 Онлайн аналитична обработка на данни (OnLine Analytical
Pro...
ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ
 Отнася се към определена категория софтуерни технологии,
предоставящи възможност на...
ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ (2)
 На крайните потребители е осигурена възможност за:
 пресмятане и моделиране, п...
ВИДОВЕ OLAP СИСТЕМИ
 Релационна OLAP система (ROLAP)
 съхранява данните в релационна база от данни, чиято
структура се о...
OLAP КУБОВЕ С ДАННИ
 Структури, предназначени да осигуряват бърз достъп до
данните в складовете за данни;
 Съхраняват пр...
OLAP КУБОВЕ С ДАННИ (2)
3-D куб с данни с
размерности A1, A2, A3
77Цветанка Георгиева
 Получаването на куба с данни от
да...
КУБ С ДАННИ – ПРИМЕР
888Цветанка Георгиева Информационни системи
TeacherName SubjectName SpecialityName SchoolYear Exercises
Total
И. Димитров Бази от данни Информатика 2009/2010 45
И. Ди...
TeacherName SubjectName SpecialityName SchoolYear Exercises
Total
И. Димитров Бази от данни all 2009/2010 135
К. Петров Ба...
РЕШЕТКИ ЗА ПРЕДСТАВЯНЕ НА КУБА С ДАННИ
Решетка на куб с данни
1111Цветанка Георгиева
Решетка на йерархия на
размерности
Ин...
РЕШЕТКИ ЗА ПРЕДСТАВЯНЕ НА КУБА С ДАННИ (2)
1212Цветанка Георгиева
Комбинирана решетка
Информационни системи
ОСНОВНИ OLAP ОПЕРАЦИИ
 Обединяване (roll-up)
 увеличаване на нивото на обобщаване;
 Детайлизиране (drill-down)
 намаля...
ЕЗИКЪТ MDX (MULTIDIMENSIONAL EXPRESSIONS)
 Стандартен език за заявки, позволяващи да се извършва
извличане и манипулиране...
ЕЗИКЪТ MDX – ОСНОВНИ ПОНЯТИЯ
 Член (member)
 стойност на дадено ниво (level) на размерност
(dimension); например размерн...
ЕЗИКЪТ MDX – ОСНОВНИ ПОНЯТИЯ (2)
 Размерност (dimensionality)
 характеристика на колекция от членове или нива, която
опи...
ЕЗИКЪТ MDX – ОСНОВНИ ПОНЯТИЯ (3)
 Множество (set)
 колекция от кортежи {t1, …, tk}, в която всички имат
еднакви размерно...
ЕЗИКЪТ MDX
 Общият вид на конструкцията SELECT в MDX може да се
представи по следния начин:
SELECT
{set 0} ON AXIS(0),
{s...
ЕЗИКЪТ MDX – ПРИМЕРИ Състои се от три мерки и
четири размерности:
 обща сума на упражнения
(ExercisesTotal);
 обща сума ...
ЕЗИКЪТ MDX – ПРИМЕРИ
Дефинираните йерархии в куба с данни StudentsCube
2020Цветанка Георгиева Информационни системи
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 1 Да се намери общият брой лекции за учебните
предмети „Бази от данни” и „Информационни сист...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 2 Да се намери общият брой лекции за учебните
години от 2007/2008 до 2013/2014 по специалнос...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 3 Да се извлече общият брой лекции за учебните
предмети по преподавателите във факултет „Мат...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 4 Да се намери общият брой лекции за специалност
„Информатика” по учебни предмети и по семес...
 Пример 5 Да се извлече общият брой упражнения по учебни
предмети.
SELECT Subjects.SubjectName.members ON COLUMNS
FROM St...
 Пример 6 Да се изведе общият брой упражнения за учебната
2009/2010 година по специалности и преподаватели.
SELECT { Spec...
 Пример 7 Следната конструкция връща обобщената стойност
за всички размерности:
SELECT
FROM StudentsCube
2727Цветанка Гео...
ФУНКЦИИ В MDX
 Функции, връщащи множество (например функцията
CROSSJOIN());
 Функции, които връщат отделен член;
 Функц...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 8 Да се намери общият брой лекции по учебни
предмети, семестри на учебната 2009/2010 година ...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 9 Да се изведат стойностите на мерките на куба с
данни StudentsCube за преподавателите по се...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 10 Да се изведе общият брой лекции по учебни
предмети, семестри на учебната 2009/2010 година...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 10 Да се изведе общият брой лекции по учебни
предмети, семестри на учебната 2009/2010 година...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 11 Да се намерят десетте учебни предмета с най-
голям общ брой упражнения.
SELECT { Measures...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 12 Да се изведат стойностите на мерките на куба с
данни StudentsCube за дванадесетте специал...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 13 Да се намерят учебните предмети с най-голям
общ брой упражнения за учебната 2009/2010 год...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 14 Да се изведе общият брой упражнения на
специалност „Информатика” за зимния семестър на
уч...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 14 Да се изведе общият брой упражнения на
специалност „Информатика” за зимния семестър на
уч...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 15 Следната MDX заявка е еквивалентна на
заявката от пример 12:
SELECT Measures.members ON C...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 16 Да се изведат учебните предмети, чиито общ
брой упражнения са повече през летния семестър...
ЕЗИКЪТ MDX
 Изчислими членове
 Изчисляването на нова стойност като част от
изпълнението на дадена заявка се извършва чре...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 17 Да се намери учебната натовареност на
преподавателите за учебната 2009/2010 година.
WITH ...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 18 Да се намери изчислената средна аритметична
стойност на лекциите по учебни предмети за ра...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 18 Да се намери изчислената средна аритметична
стойност на лекциите по учебни предмети за ра...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 19 Да се намери максималният брой на лекциите по
учебни предмети за различните специалности ...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 19 Да се намери максималният брой на лекциите по
учебни предмети за различните специалности ...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 20 Да се намери броят на специалностите във
факултет „Математика и информатика”.
WITH MEMBER...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 21 Да се изведе общият брой лекции за всеки
преподавател и броя на учебните предмети на съот...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 21 Да се изведе общият брой лекции за всеки
преподавател и броя на учебните предмети на съот...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 22 Да се намери средната аритметична стойност от
броя на лекциите през семестрите на учебнат...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 22 Да се намери средната аритметична стойност от
броя на лекциите през семестрите на учебнат...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 23 Да се изведе броят на преподавателите от всеки
факултет.
WITH MEMBER Measures.[Count of t...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 24 Да се намери процентът на лекциите на всеки
учебен предмет от лекциите на всички учебни п...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 24 Да се намери процентът на лекциите на всеки
учебен предмет от лекциите на всички учебни п...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 25 Да се намери общият брой лекции за факултета,
в който е специалност „Информатика”.
SELECT...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 26 Да се намери процентът на лекциите на всеки
преподавател от всички лекции.
WITH MEMBER
Me...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 26 Да се намери процентът на лекциите на всеки
преподавател от всички лекции.
WITH MEMBER
Me...
ЕЗИКЪТ MDX
 Създаване на именувано множество (named sets)
WITH SET set_name1 AS 'set1'
SET set_name2 AS 'set2'
…
SELECT
{...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 27 Да се намерят петте учебни предмета с най-
висок общ брой лекции, както и общия брой на л...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 27 Да се намерят петте учебни предмета с най-
висок общ брой лекции, както и общия брой на л...
ЕЗИКЪТ MDX – ПРИМЕРИ
 Пример 28 Да се изведе общият брой упражнения на
учебните предмети, съдържащи дадени символни низов...
6161Цветанка Георгиева Информационни системи
Цветанка Георгиева-Трифонова, 2017
Някои права запазени.
Презентацията е дост...
Próximos SlideShares
Carregando em…5
×

Системи за онлайн аналитична обработка на данни (OLAP)

0 visualizações

Publicada em

Изчисляването и сортирането на обобщени данни, съхранявани отделно от източниците на данни за онлайн обработка на транзакции (Online Transaction Processing – OLTP), намалява количеството на обработваните данните, когато е необходимо потребителите да анализират огромно количество информация. Организирането на данните в склада за данни в структури, съответстващи на многомерния модел и предварителното им обработване осигурява максимална производителност за заявките, които обобщават данните по различни начини. Когато се използват инструменти за онлайн аналитична обработка на данни (Online Analytical Processing – OLAP), е необходимо да се вземат предвид някои основни съображения при проектиране на кубовете с данни (data cubes).

Publicada em: Dados e análise
  • Seja o primeiro a comentar

Системи за онлайн аналитична обработка на данни (OLAP)

  1. 1. СИСТЕМИ ЗА ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ (OLAP) доц. д-р Цветанка Георгиева-Трифонова
  2. 2. СИСТЕМИ ЗА ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ – СЪДЪРЖАНИЕ  Онлайн аналитична обработка на данни (OnLine Analytical Processing – OLAP)  Видове OLAP системи  OLAP кубове с данни  Основни OLAP операции  Езикът MDX (MultiDimensional eXpressions) 22Цветанка Георгиева Информационни системи
  3. 3. ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ  Отнася се към определена категория софтуерни технологии, предоставящи възможност на аналитици, мениджъри, администратори да извлекат полза от проучването на натрупаните данни;  Бърз, удобен, интерактивен достъп до разнообразни изгледи на информацията, която е била трансформирана от първоначалните данни така, че да отразява реалните потребителски изисквания;  Извършване на динамичен многомерен анализ на събраните данни, натрупани в резултат от дейността на конкретната организация;  Многопотребителски клиент/сървър режим на работа и получаване на бърз отговор на заявките, независимо от количеството на обработваните данни. 33Цветанка Георгиева Информационни системи
  4. 4. ОНЛАЙН АНАЛИТИЧНА ОБРАБОТКА НА ДАННИ (2)  На крайните потребители е осигурена възможност за:  пресмятане и моделиране, приложени за различните размерности и йерархии;  анализиране на тенденции за последователен период от време;  извличане на подмножества на данните за допълнително преглеждане;  извличане на данни от различните нива на обобщаване;  получаване на нови размерности за сравняване на преглежданите данни. 44Цветанка Георгиева Информационни системи
  5. 5. ВИДОВЕ OLAP СИСТЕМИ  Релационна OLAP система (ROLAP)  съхранява данните в релационна база от данни, чиято структура се основава на схема “звезда” или схема “снежинка”, но поддържа разширения на SQL като например операторите ROLLUP, CUBE, PIVOT и методи за ефективно реализиране на многомерния модел и операции;  Многомерна OLAP система (MOLAP)  съхранява многомерни данни, включващи резултати от обобщения, в специални структури от данни, наречени кубове с данни (data cubes) и изпълнява OLAP операциите върху тях. 55Цветанка Георгиева Информационни системи
  6. 6. OLAP КУБОВЕ С ДАННИ  Структури, предназначени да осигуряват бърз достъп до данните в складовете за данни;  Съхраняват предварително изчислени обобщения на данните;  Отстраняват необходимостта от съединяването на таблици и преизчисляването на стойностите, връщани от най-често изпълняваните заявки. 66Цветанка Георгиева Информационни системи
  7. 7. OLAP КУБОВЕ С ДАННИ (2) 3-D куб с данни с размерности A1, A2, A3 77Цветанка Георгиева  Получаването на куба с данни от дадена релация може да се представи чрез добавяне на нов атрибут, който съхранява обобщена стойност (брой, сума, средна аритметична) при групиране по стойностите на един от атрибутите, по два от тях, т.н. и накрая по всички атрибути на първоначалната релация. Информационни системи
  8. 8. КУБ С ДАННИ – ПРИМЕР 888Цветанка Георгиева Информационни системи
  9. 9. TeacherName SubjectName SpecialityName SchoolYear Exercises Total И. Димитров Бази от данни Информатика 2009/2010 45 И. Димитров Бази от данни Компютърни науки 2009/2010 90 К. Петров Бази от данни Информатика 2009/2010 45 К. Петров Информационни системи Информатика 2009/2010 60 К. Петров Бази от данни Математика и информатика 2009/2010 30 К. Петров Информационни системи Компютърни науки 2009/2010 60 all Бази от данни Информатика 2009/2010 90 all Бази от данни Компютърни науки 2009/2010 90 … И. Димитров all Информатика 2009/2010 45 К. Петров all Информатика 2009/2010 105 … ПРИМЕРЕН КУБ С ДАННИ ОТ ЧЕТИРИ РАЗМЕРНОСТИ 99Цветанка Георгиева Информационни системи
  10. 10. TeacherName SubjectName SpecialityName SchoolYear Exercises Total И. Димитров Бази от данни all 2009/2010 135 К. Петров Бази от данни all 2009/2010 75 … И. Димитров Бази от данни Информатика all 45 И. Димитров Бази от данни Компютърни науки all 90 … all all Информатика 2009/2010 150 all all Компютърни науки 2009/2010 150 all all Математика и информатика 2009/2010 30 all Бази от данни all 2009/2010 210 all Информационни системи all 2009/2010 120 И. Димитров all all 2009/2010 135 К. Петров all all 2009/2010 195 … all all all 2009/2010 330 … all all all all 330
  11. 11. РЕШЕТКИ ЗА ПРЕДСТАВЯНЕ НА КУБА С ДАННИ Решетка на куб с данни 1111Цветанка Георгиева Решетка на йерархия на размерности Информационни системи
  12. 12. РЕШЕТКИ ЗА ПРЕДСТАВЯНЕ НА КУБА С ДАННИ (2) 1212Цветанка Георгиева Комбинирана решетка Информационни системи
  13. 13. ОСНОВНИ OLAP ОПЕРАЦИИ  Обединяване (roll-up)  увеличаване на нивото на обобщаване;  Детайлизиране (drill-down)  намаляване на нивото на обобщаване или увеличаване на подробностите;  Избиране и проектиране (slice-and-dice)  намаляване на размерността на данните, т.е. извличане на проекция на данните върху подмножество от размерностите за определени стойности на другите размерности;  Филтриране (filtering)  извеждане на данни, които отговарят на определено условие, зададено за някоя размерност;  Пренасочване (pivot)  пренасочване на многомерния изглед на данните. 1313Цветанка Георгиева Информационни системи
  14. 14. ЕЗИКЪТ MDX (MULTIDIMENSIONAL EXPRESSIONS)  Стандартен език за заявки, позволяващи да се извършва извличане и манипулиране на многомерните данни, предложен от Microsoft през 1997;  Не е отворен стандарт, а спецификация, собственост на Microsoft;  Възприет е от много OLAP доставчици:  доставчици от страна на сървъра като Applix, MicroStrategy, SAS (Statistical Analysis System), SAP (System Analysis and Program Development), Whitelight, NCR (National Cash Register Company);  доставчици от страна на клиента като Panorama Software, Proclarity, AppSource, Cognos, Business Objects, Brio Technology, Crystal Reports, Microsoft Excel, Microsoft Reporting Services, др. 1414Цветанка Георгиева Информационни системи
  15. 15. ЕЗИКЪТ MDX – ОСНОВНИ ПОНЯТИЯ  Член (member)  стойност на дадено ниво (level) на размерност (dimension); например размерността Dates.Semester може да има стойности “летен” и “зимен”.  Оси (axis)  Една MDX конструкция може да има до 128 оси, въпреки че рядко се използват повече от две.  Първите пет имат имена: 0 COLUMNS 1 ROWS 2 PAGES 3 CHAPTERS 4 SECTIONS 1515Цветанка Георгиева Информационни системи
  16. 16. ЕЗИКЪТ MDX – ОСНОВНИ ПОНЯТИЯ (2)  Размерност (dimensionality)  характеристика на колекция от членове или нива, която описва от кои размерности са те и реда им в тези размерности;  Кортеж (tuple)  Един кортеж t е колекция от членове (m1, …, mi), в която всички имат различни размерности (dimensionality).  Загражда се с обикновени скоби ().  Например: (Dates.SchoolYear.[2009/2010], Specialities.[Математика и информатика]) 1616Цветанка Георгиева Информационни системи
  17. 17. ЕЗИКЪТ MDX – ОСНОВНИ ПОНЯТИЯ (3)  Множество (set)  колекция от кортежи {t1, …, tk}, в която всички имат еднакви размерности в един и същи ред;  загражда се с фигурни скоби {}.  Например: { (Dates.SchoolYear.[2008/2009], Specialities.[Математика и информатика]), (Dates.SchoolYear.[2009/2010], Specialities.[Математика и информатика]) }  Разрез (slice)  представя данните от куба за част от размерностите при определени стойности на останалите размерности. 1717Цветанка Георгиева Информационни системи
  18. 18. ЕЗИКЪТ MDX  Общият вид на конструкцията SELECT в MDX може да се представи по следния начин: SELECT {set 0} ON AXIS(0), {set 1} ON AXIS(1), … {set n} ON AXIS(n), FROM cube_name [WHERE (tuple)] 1818Цветанка Георгиева Информационни системи
  19. 19. ЕЗИКЪТ MDX – ПРИМЕРИ Състои се от три мерки и четири размерности:  обща сума на упражнения (ExercisesTotal);  обща сума на лекции (LecturesTotal);  брой редове (TeachFactCount);  време (Dates);  специалности (Specialities);  учебни предмети (Subjects);  преподаватели (Teachers). 1919Цветанка Георгиева Информационни системи
  20. 20. ЕЗИКЪТ MDX – ПРИМЕРИ Дефинираните йерархии в куба с данни StudentsCube 2020Цветанка Георгиева Информационни системи
  21. 21. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 1 Да се намери общият брой лекции за учебните предмети „Бази от данни” и „Информационни системи” по специалности. SELECT { ( Subjects.SubjectName.[Бази от данни] ), ( Subjects.SubjectName.[Информационни системи] ) } ON COLUMNS, { Specialities.SpecialityName.members } ON ROWS FROM StudentsCube 2121Цветанка Георгиева Информационни системи
  22. 22. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 2 Да се намери общият брой лекции за учебните години от 2007/2008 до 2013/2014 по специалностите във факултет „Математика и информатика”. SELECT { Dates.SchoolYear.[2007/2008] : Dates.SchoolYear.[2009/2010] } ON COLUMNS, { Specialities.[DepartmentName - SpecialityName].[Математика и информатика].children } ON ROWS FROM StudentsCube 2222Цветанка Георгиева Информационни системи
  23. 23. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 3 Да се извлече общият брой лекции за учебните предмети по преподавателите във факултет „Математика и информатика” и по специалности. SELECT NON EMPTY { Subjects.SubjectName.members } ON COLUMNS, NON EMPTY { { Teachers.[Математика и информатика].children } * { Specialities.SpecialityName.members } } ON ROWS FROM StudentsCube 2323Цветанка Георгиева Моделиране на информационни системи
  24. 24. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 4 Да се намери общият брой лекции за специалност „Информатика” по учебни предмети и по семестри на учебната 2009/2010 година. SELECT { Subjects.SubjectName.members } ON COLUMNS, { Dates.[SchoolYear - Semester - Date].[2009/2010].children } ON ROWS FROM StudentsCube WHERE (Specialities.SpecialityName.[Информатика]) 2424Цветанка Георгиева Информационни системи
  25. 25.  Пример 5 Да се извлече общият брой упражнения по учебни предмети. SELECT Subjects.SubjectName.members ON COLUMNS FROM StudentsCube WHERE (Measures.ExercisesTotal) 2525Цветанка Георгиева Информационни системи ЕЗИКЪТ MDX – ПРИМЕРИ
  26. 26.  Пример 6 Да се изведе общият брой упражнения за учебната 2009/2010 година по специалности и преподаватели. SELECT { Specialities.SpecialityName.members } ON COLUMNS, { Teachers.TeacherName.members } ON ROWS FROM StudentsCube WHERE (Measures.ExercisesTotal, Dates.[2009/2010]) 2626Цветанка Георгиева Информационни системи ЕЗИКЪТ MDX – ПРИМЕРИ
  27. 27.  Пример 7 Следната конструкция връща обобщената стойност за всички размерности: SELECT FROM StudentsCube 2727Цветанка Георгиева Информационни системи ЕЗИКЪТ MDX – ПРИМЕРИ
  28. 28. ФУНКЦИИ В MDX  Функции, връщащи множество (например функцията CROSSJOIN());  Функции, които връщат отделен член;  Функции, които връщат кортеж;  Числови функции, които извършват изчисления с мерките;  Логически функции, които връщат булев резултат;  Функции, които връщат като резултат масив;  Функции, които връщат като резултат символен низ. 2828Цветанка Георгиева Информационни системи
  29. 29. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 8 Да се намери общият брой лекции по учебни предмети, семестри на учебната 2009/2010 година и специалности. SELECT { Subjects.SubjectName.members } ON COLUMNS, CROSSJOIN( { Dates.[SchoolYear - Semester - Date].[2009/2010].children }, { Specialities.SpecialityName.members } ) ON ROWS FROM StudentsCube 2929Цветанка Георгиева Информационни системи
  30. 30. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 9 Да се изведат стойностите на мерките на куба с данни StudentsCube за преподавателите по семестрите на учебната 2009/2010 година. SELECT { Measures.members } ON COLUMNS, { NONEMPTYCROSSJOIN(Teachers.TeacherName.members, Dates.[SchoolYear - Semester - Date].[2009/2010].children ) } ON ROWS FROM StudentsCube 3030Цветанка Георгиева Информационни системи
  31. 31. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 10 Да се изведе общият брой лекции по учебни предмети, семестри на учебната 2009/2010 година, специалности и преподаватели. SELECT { Subjects.SubjectName.members } ON COLUMNS, CROSSJOIN( CROSSJOIN( { Dates.[SchoolYear - Semester - Date].[2009/2010].children }, { Specialities.SpecialityName.members } ), {Teachers.TeacherName.members} ) ON ROWS FROM StudentsCube 3131Цветанка Георгиева Информационни системи
  32. 32. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 10 Да се изведе общият брой лекции по учебни предмети, семестри на учебната 2009/2010 година, специалности и преподаватели. SELECT { Subjects.SubjectName.members } ON COLUMNS, CROSSJOIN( CROSSJOIN( { Dates.[SchoolYear - Semester - Date].[2009/2010].children }, { Specialities.SpecialityName.members } ), {Teachers.TeacherName.members} ) ON ROWS FROM StudentsCube 3232Цветанка Георгиева Информационни системи
  33. 33. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 11 Да се намерят десетте учебни предмета с най- голям общ брой упражнения. SELECT { Measures.ExercisesTotal } ON COLUMNS, TOPCOUNT(Subjects.SubjectName.members, 10, Measures.ExercisesTotal) ON ROWS FROM StudentsCube 3333Цветанка Георгиева Информационни системи
  34. 34. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 12 Да се изведат стойностите на мерките на куба с данни StudentsCube за дванадесетте специалности с най- голям общ брой упражнения. SELECT { Measures.members } ON COLUMNS, TOPCOUNT(Specialities.SpecialityName.members, 12, Measures.ExercisesTotal) ON ROWS FROM StudentsCube 3434Цветанка Георгиева Информационни системи
  35. 35. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 13 Да се намерят учебните предмети с най-голям общ брой упражнения за учебната 2009/2010 година. Общата сума от упражненията за тези учебни предмети да е поне 400. SELECT { Measures.ExercisesTotal } ON COLUMNS, TOPSUM (Subjects.SubjectName.children, 400, Measures.ExercisesTotal) ON ROWS FROM StudentsCube WHERE (Dates.[2009/2010]) 3535Цветанка Георгиева Информационни системи
  36. 36. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 14 Да се изведе общият брой упражнения на специалност „Информатика” за зимния семестър на учебната 2009/2010 година по учебни предмети, подредени в низходящ ред. SELECT { Dates.[2009/2010].[зимен] } ON COLUMNS, ORDER( { Subjects.SubjectName.children }, ( Measures.ExercisesTotal, Dates.[2009/2010].[зимен] ), BDESC) ON ROWS FROM StudentsCube WHERE (Specialities.[Информатика], Measures.ExercisesTotal) 3636Цветанка Георгиева Информационни системи
  37. 37. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 14 Да се изведе общият брой упражнения на специалност „Информатика” за зимния семестър на учебната 2009/2010 година по учебни предмети, подредени в низходящ ред. SELECT { Dates.[2009/2010].[зимен] } ON COLUMNS, ORDER( { Subjects.SubjectName.children }, ( Measures.ExercisesTotal, Dates.[2009/2010].[зимен] ), BDESC) ON ROWS FROM StudentsCube WHERE (Specialities.[Информатика], Measures.ExercisesTotal) 3737Цветанка Георгиева Информационни системи
  38. 38. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 15 Следната MDX заявка е еквивалентна на заявката от пример 12: SELECT Measures.members ON COLUMNS, HEAD(ORDER({Specialities.SpecialityName.members}, Measures.ExercisesTotal, BDESC), 12) ON ROWS FROM StudentsCube 3838Цветанка Георгиева Информационни системи
  39. 39. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 16 Да се изведат учебните предмети, чиито общ брой упражнения са повече през летния семестър на учебната 2009/2010 година в сравнение със зимния. SELECT {Dates.[2009/2010].[зимен], Dates.[2009/2010].[летен]} ON COLUMNS, FILTER( { Subjects.SubjectName.members }, (Dates.[2009/2010].[зимен], Measures.ExercisesTotal) < (Dates.[2009/2010].[летен], Measures.ExercisesTotal) ) ON ROWS FROM StudentsCube WHERE (Measures.ExercisesTotal) 3939Цветанка Георгиева Информационни системи
  40. 40. ЕЗИКЪТ MDX  Изчислими членове  Изчисляването на нова стойност като част от изпълнението на дадена заявка се извършва чрез добавяне на изчислим член с помощта на следния синтаксис: WITH MEMBER member_name1 AS 'expression1' MEMBER member_name2 AS 'expression2' … SELECT {set 0} ON AXIS(0), {set 1} ON AXIS(1), … {set n} ON AXIS(n), FROM cube_name WHERE (tuple) 4040Цветанка Георгиева Информационни системи
  41. 41. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 17 Да се намери учебната натовареност на преподавателите за учебната 2009/2010 година. WITH MEMBER Measures.Total AS '(Measures.LecturesTotal*2 + Measures.ExercisesTotal)' SELECT NON EMPTY { Teachers.TeacherName.members } ON COLUMNS, { Measures.LecturesTotal, Measures.ExercisesTotal, Measures.Total} ON ROWS FROM StudentsCube WHERE (Dates.[2009/2010]) 4141Цветанка Георгиева Информационни системи
  42. 42. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 18 Да се намери изчислената средна аритметична стойност на лекциите по учебни предмети за различните специалности. WITH MEMBER Specialities.[DepartmentName - SpecialityName].[Average lectures] AS 'AVG({ Specialities.[DepartmentName - SpecialityName].SpecialityName.members })' SELECT { Specialities.[Average lectures] } ON COLUMNS, { Subjects.SubjectName.members } ON ROWS FROM StudentsCube 4242Цветанка Георгиева Информационни системи
  43. 43. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 18 Да се намери изчислената средна аритметична стойност на лекциите по учебни предмети за различните специалности. WITH MEMBER Specialities.[DepartmentName - SpecialityName].[Average lectures] AS 'AVG({ Specialities.[DepartmentName - SpecialityName].SpecialityName.members })' SELECT { Specialities.[Average lectures] } ON COLUMNS, { Subjects.SubjectName.members } ON ROWS FROM StudentsCube 4343Цветанка Георгиева Информационни системи
  44. 44. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 19 Да се намери максималният брой на лекциите по учебни предмети за различните специалности за учебната 2009/2010 година. WITH MEMBER Specialities.[DepartmentName - SpecialityName].[Max lectures] AS 'MAX({ Specialities.[DepartmentName - SpecialityName].SpecialityName.members })' SELECT { Specialities.[Max lectures] } ON COLUMNS, { Subjects.SubjectName.members } ON ROWS FROM StudentsCube WHERE (Dates.[2009/2010]) 4444Цветанка Георгиева Информационни системи
  45. 45. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 19 Да се намери максималният брой на лекциите по учебни предмети за различните специалности за учебната 2009/2010 година. WITH MEMBER Specialities.[DepartmentName - SpecialityName].[Max lectures] AS 'MAX({ Specialities.[DepartmentName - SpecialityName].SpecialityName.members })' SELECT { Specialities.[Max lectures] } ON COLUMNS, { Subjects.SubjectName.members } ON ROWS FROM StudentsCube WHERE (Dates.[2009/2010]) 4545Цветанка Георгиева Информационни системи
  46. 46. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 20 Да се намери броят на специалностите във факултет „Математика и информатика”. WITH MEMBER Measures.[Count of specialities] AS 'COUNT(Specialities.[Математика и информатика].children)' SELECT { Measures.[Count of specialities] } ON COLUMNS FROM StudentsCube 4646Цветанка Георгиева Информационни системи
  47. 47. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 21 Да се изведе общият брой лекции за всеки преподавател и броя на учебните предмети на съответните преподаватели през учебната 2009/2010 година. WITH MEMBER Measures.[Subject Count] AS 'COUNT( CROSSJOIN( {Measures.LecturesTotal}, {Subjects.SubjectName.children} ), EXCLUDEEMPTY )' SELECT { Measures.LecturesTotal, Measures.[Subject Count] } ON COLUMNS, { Teachers.TeacherName.members} ON ROWS FROM StudentsCube WHERE (Dates.[2009/2010]) 4747Цветанка Георгиева Информационни системи
  48. 48. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 21 Да се изведе общият брой лекции за всеки преподавател и броя на учебните предмети на съответните преподаватели през учебната 2009/2010 година. WITH MEMBER Measures.[Subject Count] AS 'COUNT( CROSSJOIN( {Measures.LecturesTotal}, {Subjects.SubjectName.children} ), EXCLUDEEMPTY )' SELECT { Measures.LecturesTotal, Measures.[Subject Count] } ON COLUMNS, { Teachers.TeacherName.members} ON ROWS FROM StudentsCube WHERE (Dates.[2009/2010]) 4848Цветанка Георгиева Информационни системи
  49. 49. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 22 Да се намери средната аритметична стойност от броя на лекциите през семестрите на учебната 2009/2010 година за всеки преподавател. WITH MEMBER Dates.[SchoolYear - Semester - Date].[Average per semester] AS 'AVG(DESCENDANTS(Dates.[2009/2010], Dates.Semester), Measures.LecturesTotal)' SELECT { Dates.[Average per semester] } ON COLUMNS, { Teachers.TeacherName.members } ON ROWS FROM StudentsCube 4949Цветанка Георгиева Информационни системи
  50. 50. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 22 Да се намери средната аритметична стойност от броя на лекциите през семестрите на учебната 2009/2010 година за всеки преподавател. WITH MEMBER Dates.[SchoolYear - Semester - Date].[Average per semester] AS 'AVG(DESCENDANTS(Dates.[2009/2010], Dates.Semester), Measures.LecturesTotal)' SELECT { Dates.[Average per semester] } ON COLUMNS, { Teachers.TeacherName.members } ON ROWS FROM StudentsCube 5050Цветанка Георгиева Информационни системи
  51. 51. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 23 Да се изведе броят на преподавателите от всеки факултет. WITH MEMBER Measures.[Count of teachers] AS 'COUNT(DESCENDANTS( Teachers.TeacherName.CURRENTMEMBER.children, Teachers.TeacherName))' SELECT { Measures.[Count of teachers] } ON COLUMNS, { Teachers.DepartmentName.members } ON ROWS FROM StudentsCube 5151Цветанка Георгиева Информационни системи
  52. 52. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 24 Да се намери процентът на лекциите на всеки учебен предмет от лекциите на всички учебни предмети. WITH MEMBER Measures.[Percentage of lectures of subjects] AS '100*(Subjects.SubjectName.CURRENTMEMBER, Measures.LecturesTotal) / (Subjects.SubjectName.CURRENTMEMBER.PARENT, Measures.LecturesTotal)' MEMBER Measures.[All subjects] AS 'Subjects.SubjectName.CURRENTMEMBER.PARENT.NAME' SELECT { Measures.LecturesTotal, Measures.[Percentage of lectures of subjects], Measures.[All subjects] } ON COLUMNS, { Subjects.SubjectName.members } ON ROWS FROM StudentsCube 5252Цветанка Георгиева Информационни системи
  53. 53. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 24 Да се намери процентът на лекциите на всеки учебен предмет от лекциите на всички учебни предмети. WITH MEMBER Measures.[Percentage of lectures of subjects] AS '100*(Subjects.SubjectName.CURRENTMEMBER, Measures.LecturesTotal) / (Subjects.SubjectName.CURRENTMEMBER.PARENT, Measures.LecturesTotal)' MEMBER Measures.[All subjects] AS 'Subjects.SubjectName.CURRENTMEMBER.PARENT.NAME' SELECT { Measures.LecturesTotal, Measures.[Percentage of lectures of subjects], Measures.[All subjects] } ON COLUMNS, { Subjects.SubjectName.members } ON ROWS FROM StudentsCube 5353Цветанка Георгиева Информационни системи
  54. 54. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 25 Да се намери общият брой лекции за факултета, в който е специалност „Информатика”. SELECT { ANCESTOR( Specialities.[Информатика], Specialities.[DepartmentName - SpecialityName].DepartmentName ) } ON COLUMNS FROM StudentsCube 5454Цветанка Георгиева Информационни системи
  55. 55. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 26 Да се намери процентът на лекциите на всеки преподавател от всички лекции. WITH MEMBER Measures.[Percentage of lectures of teachers] AS '100*(Teachers.TeacherName.CURRENTMEMBER, Measures.LecturesTotal) / (ANCESTOR(Teachers.TeacherName.CURRENTMEMBER, Teachers.TeacherName.[(All)]), Measures.LecturesTotal)' MEMBER Measures.[All teachers] AS 'ANCESTOR(Teachers.TeacherName.CURRENTMEMBER, Teachers.TeacherName.[(All)]).NAME' SELECT { Measures.LecturesTotal, Measures.[Percentage of lectures of teachers], Measures.[All teachers] } ON COLUMNS, { Teachers.TeacherName.members } ON ROWS FROM StudentsCube 5555Цветанка Георгиева Информационни системи
  56. 56. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 26 Да се намери процентът на лекциите на всеки преподавател от всички лекции. WITH MEMBER Measures.[Percentage of lectures of teachers] AS '100*(Teachers.TeacherName.CURRENTMEMBER, Measures.LecturesTotal) / (ANCESTOR(Teachers.TeacherName.CURRENTMEMBER, Teachers.TeacherName.[(All)]), Measures.LecturesTotal)' MEMBER Measures.[All teachers] AS 'ANCESTOR(Teachers.TeacherName.CURRENTMEMBER, Teachers.TeacherName.[(All)]).NAME' SELECT { Measures.LecturesTotal, Measures.[Percentage of lectures of teachers], Measures.[All teachers] } ON COLUMNS, { Teachers.TeacherName.members } ON ROWS FROM StudentsCube 5656Цветанка Георгиева Информационни системи
  57. 57. ЕЗИКЪТ MDX  Създаване на именувано множество (named sets) WITH SET set_name1 AS 'set1' SET set_name2 AS 'set2' … SELECT {set 0} ON AXIS(0), {set 1} ON AXIS(1), … {set n} ON AXIS(n), FROM cube_name WHERE (tuple) 5757Цветанка Георгиева Информационни системи
  58. 58. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 27 Да се намерят петте учебни предмета с най- висок общ брой лекции, както и общия брой на лекциите на всички останали учебни предмети. WITH SET Top5Subjects AS 'TOPCOUNT(Subjects.SubjectName.members, 5, Measures.LecturesTotal)' MEMBER Subjects.SubjectName.Others AS 'SUM(Subjects.SubjectName.members, Measures.LecturesTotal) - SUM(Top5Subjects, Measures.LecturesTotal)' SELECT {Measures.LecturesTotal} ON COLUMNS, {Top5Subjects, Subjects.SubjectName.Others} ON ROWS FROM StudentsCube 5858Цветанка Георгиева Информационни системи
  59. 59. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 27 Да се намерят петте учебни предмета с най- висок общ брой лекции, както и общия брой на лекциите на всички останали учебни предмети. WITH SET Top5Subjects AS 'TOPCOUNT(Subjects.SubjectName.members, 5, Measures.LecturesTotal)' MEMBER Subjects.SubjectName.Others AS 'SUM(Subjects.SubjectName.members, Measures.LecturesTotal) - SUM(Top5Subjects, Measures.LecturesTotal)' SELECT {Measures.LecturesTotal} ON COLUMNS, {Top5Subjects, Subjects.SubjectName.Others} ON ROWS FROM StudentsCube 5959Цветанка Георгиева Информационни системи
  60. 60. ЕЗИКЪТ MDX – ПРИМЕРИ  Пример 28 Да се изведе общият брой упражнения на учебните предмети, съдържащи дадени символни низове в имената си (например „бази”, „системи”, др.). WITH SET SearchSubjects AS 'FILTER(Subjects.SubjectName.members, (InStr(1, Subjects.SubjectName.CURRENTMEMBER.NAME, "бази")<>0) OR (InStr(1, Subjects.SubjectName.CURRENTMEMBER.NAME, "системи")<>0))' SELECT { SearchSubjects } ON COLUMNS, { Measures.ExercisesTotal } ON ROWS FROM StudentsCube 6060Цветанка Георгиева Информационни системи
  61. 61. 6161Цветанка Георгиева Информационни системи Цветанка Георгиева-Трифонова, 2017 Някои права запазени. Презентацията е достъпна под лиценз Creative Commons, Признание-Некомерсиално-Без производни, https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode

×