Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

OLAP технологиясы




Шешімді қабылдауды ұстану жүйесінде, көбінесе пайдаланушыға ыңғайлы қабылдау мен талдау түрінде алғашқы жиыннан әртүрлі таңдауы үшін, агрегатты деректерді ұсыну құралы болады. Ереже бойынша, мұндай агрегатты функциялар көпөлшемді (және реляциялық емес) деректер жиынның құрайды (гиперкуб немесе метакуб деп аталады), олардың осьтері параметрден тұрады, ал ұяшықтары - агрегатты деректерге тәуелді - бірақ мұндай деректер реляциялық кестеде сақталуы мүмкін. Бұл жағдайда біз деректердің сақталуының физикалық үлестіруі жөнінде емес, олардың логикалық ұйымдасуы жөнінде айтамыз). Деректер әр осьтің жанынан, оның детальдауын әртүрлі деңгейде ұсынуы иерархия түрінде ұйымдастырылуы мүмкін. Деректердің осындай моделінде пайдаланушылар күрделі сұраныстарды, есеп беруді генерациялауды және деректер көпмүшесін алуды қалыптастырады.

Көп өлшемді кубтар.

Бұл бөлімде біз OLAP концепциясын және көп өлшемді кубтарды нақты қарастырамыз. Мысал ретінде реляциялық деректер қорын қолданамыз. Біз оны OLAP принциптерін иллюстрациялау үшін қолданамыз, Microsoft SQL Server жеткізу комплектісіне кіретін Northwind деректер қорын немесе қарапайым деректер қоры болатын, компанияның сауда операциялары жөнінде мәліметті сақтайтын және өнімді көтерме жеткізумен айналысатын Microsoft Access пайдаланамыз. Мұндай деректерге жеткізуші, клиент, жеткізумен айналысатын компания, жеткізілетін тауар тізімі және оның категориясы, сұраныс жасалған тауар жөніндегі деректер, компания қызметкерлерінің тізімі жөніндегі мәліметтер жатады. Northwind деректер қорының нақты сипаттамасын Microsoft SQL Server немесе Microsoft Access анықтама жүйесінен табуға болады - бұл жерде біз орын аз болғандықтан оны келтірмейміз.

OLAP концепциясын қарастыру үшін Invoices ұсынысын және Northwind деректер қорынан Products мен Categories кестелерін пайдаланамыз. Сұраныс құрып, оның нәтижесінде сұраныс жасалған тауарлар және жазылған шоттар жөнінде мағлұмат аламыз:

SELECT dbo.Invoices.Country, dbo.Invoices.City, dbo.Invoices.CustomerName, dbo.Invoices.Salesperson, dbo.Invoices.OrderDate,dbo.Categories.CategoryName, dbo.Invoices.ProductName, dbo.Invoices.ShipperName, dbo.Invoices.ExtendedPriceFROM dbo.Products INNER JOIN dbo.Categories ON dbo.Products.CategoryID = dbo.Categories.CategoryID INNER JOIN dbo.Invoices ON dbo.Products.ProductID = dbo.Invoices.ProductID

Ұқсас тапсырыс Access 2000 келесі түрде:

SELECT Invoices.Country, Invoices.City,Invoices.Customers.CompanyName ASCustomerName, Invoices.Salesperson,Invoices.OrderDate, Categories.CategoryName, Invoices.ProductName, Invoices.Shippers.CompanyName AS ShipperName, Invoices.ExtendedPriceFROM Categories INNER JOIN (Invoices INNERJOIN Products ON Invoices.ProductID =Products.ProductID) ON Categories.CategoryID =Products.CategoryID;

Бұл тапсырыс жазылған шот жөніндегі мәліметі бар Invoices ұсынысына, сол сияқты Сategories және Products кестелеріне үндейді. Кестелерде сұраныс жасалған өнім категориясы және сол өнім туралы мәлімет болады. Осы тапсырыс нәтижесінде біз категориясы мен тауар аталуы бар тапсырыс жасатылған деректер, тапсырыс жасалған күні бар, шотты жазған қызметкер аты бар, тапсырыс беруші компанияның толық адресі, сол сияқты жеткізуге жауапты компанияның аталуы бар жиынды аламыз.

Ыңғайлы болу үшін бұл тапсырысты ұсыныс түрінде Invoices1 деп атаймыз. Бұл ұсынысқа жасалған үндеу нәтижесі 22-суретте келтірілген.

22-сурет. Invoices1 ұсынысына үндеу нәтижесі.

Біз осы ұсыныс негізінде қандай агрегатты деректерді аламыз? Көбінесе бұл жауаптар мынадай типтегі сұрақтарға:

· Франциядағы клиенттермен жасалған тапсырыс бағасының қосындысы қандай?

· Speedy Express компаниясымен жеткізілген және Франциядағы клиенттермен жасалған тапсырыс бағасының қосындысы қандай?

· Speedy Express компаниясымен жеткізілген және 1997 жылы Франциядағы клиенттермен жасалған тапсырыс бағасының қосындысы қандай?

Бұл сұрақтарды SQL тіліндегі сұранысқа ауыстырамыз (ағылшын тіліндегі ұқсас сұрақтарды Microsoft English Query көмегімен SQL-сұранысқа аударамыз, бірақ осындай құралдарды қарастыру берілген мақаланың шегінен шығады).

 

Сұрақ SQL-сұраныс
Франциядағы клиенттермен жасалған тапсырыс бағасының қосындысы қандай? SELECT SUM (ExtendedPrice) FROM invoices1 WHERE Country=’France’
Speedy Express компаниясымен жеткізілген және Франциядағы клиенттермен жасалған тапсырыс бағасының қосындысы қандай? SELECT SUM (ExtendedPrice) FROM invoices1 WHERE Country=’France’ AND ShipperName=’Speedy Express’
Speedy Express компаниясымен жеткізілген және 1996 жылы Франциядағы клиенттермен жасалған тапсырыс бағасының қосындысы қандай?   SELECT SUM (ExtendedPrice) FROM Ord_pmt WHERE CompanyName=’Speedy Express’ AND OrderDate BETWEEN ‘December 31, 1995’ AND ‘April 1, 1996’ AND ShipperName=’Speedy Express’

 

Жоғарыда келтірілген кез келген сұраныс нәтижесі сан болады. Егер бірінші сұраныста Если в ‘France’ параметрін ‘Austria’ параметріне немесе басқа мемлекет атына ауыстырып, осы сұранысты қайтадан орындап, басқа сан алуға болады. Осы процедураны барлық мемлекеттермен орындап, біз келесі деректер жиынын аламыз (төменде фрагментті көрсетілген):

 

Country SUM (ExtendedPrice)
Argentina 7327.3
Austria 110788.4
Brazil 97407.74
Canada 46190.1
Denmark 28392.32
Finland 15296.35

 

Алынған агрегатты мәндер жиыны (бұл жағдайда-қосынды) деректердің бір өлшемді жиыны сияқты интерпретациялануы мүмкін. Осы деректер жиынын сұраныс нәтижесінде келесі түрдегі GROUP BY сөйлемімен алуға болады:

 

SELECT Country, SUM (ExtendedPrice) FROM invoices1 GROUP BY Country

 

Жоғарыда келтірілген WHERE сөйлемде екі шартты бар сұранысты қараймыз. Егер Country және ShipperName параметрлерінің барлық мүмкін мәндерін қойып, осы сұранысты орындасақ, біз келесі түрдегі деректердің екі өлшемді жиынын аламыз (төменде фрагмент көрсетілген):

 

  ShipperName
Country Federal Shipping Speedy Express United Package
Argentina 1 210.30 1 816.20 5 092.60
Austria 40 870.77 41 004.13 46 128.93
Belgium 11 393.30 4 717.56 17 713.99
Brazil 16 514.56 35 398.14 55 013.08
Canada 19 598.78 5 440.42 25 157.08
Denmark 18 295.30 6 573.97 7 791.74
Finland 4 889.84 5 966.21 7 954.00
France 28 737.23 21 140.18 31 480.90
Germany 53 474.88 94 847.12 81 962.58

 

Егер WHERE сөйлемінде мән жиынын нәтижелейтін (OLAP-куб деп аталынатын) төрт өлшемді пен бес өлшемді және т.б. болып келетін, төрт немесе одан да көп параметрлер болады.

Көпөлшемді OLAP-кубты қарастырып, деректерді талдаудың көп өлшемін қолданып кейбір кілттік терминдер мен түсініктерге өтеміз.

Соншалықты қарастырылған мысалда жалпы жағдайда әр елде бірнеше қала, ал қалада - бірнеше клиент болуы мүмкін, сол сияқты өлшемдегі мән иерархиясы жөнінде айтуға болады. Төмендегі суретте иерархияның бірінші деңгейінде мемлекет, екіншісінде - қала, ал үшіншісінде -клиенттер орналасуы мүмкін (23-сурет).

23-сурет. Клиенттрдің географиялық орналасуына байланысты өлшемдегі иерархия.

Иерархиялар балансталған (balanced) болуын ескерейік, мысалы 30 суретте берілген иерархия сияқты, сонымен қатар «күні-уақыты» және балансталмаған (unbalanced) деректер типіне негізделген иерархиялар сияқты. Балансталмаған иерархияның қарапайым мысалы - «басқарушы-бағынушы» типті иерархия (оны құрастыруға болады, мысалы, жоғарыда қарастырылған бастапқы деректер жиынының Salespeson өрісінің мәндерін қолдана отырып), ол 24-суретте берілген.

24-сурет. Балансталмаған иерархия.

Кейде мұндай иерархия үшін Parent-child hierarchy термині қолданылады.

Балансталғандар мен балансталмағандардың арасында (олар ragged - «тегіс емес» терминімен белгіленеді) аралық қалыпты алатын иерархиялар да бар. Әдетте олардың құрамына жоғарғы деңгейде орналасқан логикалық "родители" мүшелері кіреді (мысалы, географиялық иерархияда Country, City және State деңгейлері бар, бірақ бұл кезде деректер жиынында Country және City деңгейлері арасында аймақтары мен штаттары жоқ елдер бар (25-сурет).

25-сурет. «Тегіс емес» иерархия.

Балансталмаған және «тегіс емес» иерархия лар барлық OLAP-құрылғыларымен қолданылмайды. Мысалы, Microsoft Analysis Services 2000 иерархияның екі типі де бар, ал Microsoft OLAP Services 7.0 – тек балансталған түрлі OLAP-құрылғыларда иерархия деңгейінің саны да, бір деңгейдің рұқсат етілген максимал мүшелер саны да кеңістіктердің өздерінің максимал мүмкін саны да әр түрлі болуы мүмкін.

Бұл оқиға өңдеушісінде біз тізімнен таңдалған мәнге сәйкес QueryType параметрі бар Connection объектісінің OpenSchema объектісіне қатынас жасаймыз және алынған деректер жиынын MSHFlexGrid1 объектісінде көрсетеміз (26-сурет).

26-сурет. ADO Connection объектісінің OpenSchema әдісі көмегімен

метадеректер туралы мағлұмат алу.

Сонымен, біз ADO OpenSchema әдісі арқылы көпөлшемді деректер қорының метадеректеріне қатынау мүмкіндігін алдық. Біздің келесі мақсатымыз сәйкес деректерге MDX- сұраныстарды орындау болады. Метадеректердің қандай болатынын біле отырып, біз оны жасай аламыз.

MDX- сұраныстарды орындау

MDX- сұраныстарды орындау үшін біздің қосымшаға бір батырма мен MDX- сұранысының мәтінін енгізу үшін TextBox компонентін қоса отырып модификациялаймыз:

Private Sub Command2_Click() Dim RS As New ADODB.Recordset Dim Cnn As New ADODB.Connection On Error GoTo Err1 Cnn.ConnectionString = "Provider=MSOLAP.2;" & _ "Persist Security Info=True;User ID=sa;Data Source=MAINDESK;" & "Initial Catalog=NorthWind_OLAP" Cnn.Open Set Rs = Cnn.Execute(Text1.Text) Set MSHFlexGrid1.Recordset = Rs Set Cnn = Nothing Set Rs = Nothing Exit Sub Err1: MsgBox ("Неверный запрос")End Sub

27-сурет. ADO Connection объектісінің Execute әдісінің көмегімен MDX-сұранысты орындау.

ADO MD объектті моделінде MDX-сұраныстың нәтижесі CellSet объектісімен берілген. Бұл оъект Cells объектілеріне қатынас жүргізуге мүмкіндік береді, олардың сұраныс нәтижесінде алынатын деректер жиынындағы нақты ұяшықтарды береді. Бұдан басқа CellSet объектісінің құрамына Axis объектілерінен тұратын Axes коллекциясы енеді (бұл коллекция мүшелерінің саны нәтижелік деректер жиынындағы кеңістіктер санына тең). Cell объектісі сияқты Axis объектісі ось бойындағы позицияларға сәйкес келетін Position объектілерінен тұратын Positions коллекциясына ие. Мүшелері осьтегі деректердің нақты мәндерін беретін Position объектісі Members коллекциясына ие.

Құрылған қосымшаға MDX-сұранысты орындау мүмкіндігін қосамыз. Ол үшін қосымша формасына тағы бір батырманы орналастырайық, екі TextBox компонентін және осы батырма үшін оқиға өңдеушісі Click құрамыз (2 листингті қараңыз).

Private Sub Command2_Click() Dim Cst As New ADOMD.Cellset Dim Cnn As New ADODB.Connection Cnn.ConnectionString = "Provider=MSOLAP.2;Persist Security Info=True;”_ +”User ID=sa;Data Source=MAINDESK;Initial Catalog=NorthWind_OLAP" Cnn.Open Text2.Text = vbTab & vbTab Set cst.ActiveConnection = cnn cst.Source = Text1.Text On Error GoTo Err cst.Open For i = 0 To cst.Axes(0).Positions.Count - 1 Text2.Text = Text2.Text & cst.Axes(0).Positions(i).Members(0).Caption_ & vbTab Next i Text2.Text = Text2.Text & vbCrLf & vbCrLf For j = 0 To cst.Axes(1).Positions.Count - 1 Text2.Text = Text2.Text & cst.Axes(1).Positions(j).Members(0).Caption_ & vbTab For k = 0 To cst.Axes(0).Positions.Count - 1 Text2.Text = Text2.Text & vbTab & cst(k, j).FormattedValue Next k Text2.Text = Text2.Text & vbCrLf Next jExit SubErr: MsgBox ("Invalid Query")End Sub

Кодтың берілген көрінісінде біз CellSet объектісін құрамыз және оның Open әдісін қолданамыз. Егер MDX-сұранысы тиянақты болса, онда CellSet объектісінің ұяшықтарын таңдау циклы орындалады және Text2 компонентіне олардың мазмұнын шығару жүргізіледі. Құрылған қосымша жұмысының нәтижесі 28-суретте берілген.

28-сурет. ADO MD көмегімен метадеректерді оқуға арналған қосымша.

Назар аударыңыз: кодтың беріген көрінісі Cellset объектісінде екіөлшемді деректер жиыны бар болуы рұқсат етілгенде жазылады. Жалпы жағдайда бұл деректер жиынының кеңістіктер саны берілген мәннен жоғары болуы мүмкін және бұл жағдайды OLAP-клиенттерді құрған кезде ескерген жөн.

Негізгі әдебиет [2], бет773-782

Қосымша әдебиет [4], бет 215-219

Бақылау сұрақтары

1. OLAP технологиясын айтыңыз.

2. Балансталмаған иерархия дегеніміз не?

3. Тегіс емес иерархия дегеніміз не?

4. ADO - OLAP клиенттерінде қалай қолданылады?

5. Жоғарыда аталған технологияны төмендегі технологиялармен салыстырыңыз, жақсы қасиеттерін атап көрсетіңіз.

Дәріс 22. CORBA (Common Object Request Broker Architecture) технологиясы.




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


Дата добавления: 2014-10-15; Просмотров: 1991; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.