ROZSZERZENIA J ZYKA SQL DLA OPERACJI ROLAP W BAZIE ORACLE8I GRZEGORZ DZIE A, ANDRZEJ MAKULSKI Uniwersytet Technologiczno Przyrodniczy w Bydgoszczy Streszczenie W pracy przedstawiono elementy rozszerzenia j zyka zapyta SQL bazy Oracle8i, które maj za zadanie wspomaga przetwarzania danych pod k tem analitycznym (przetwarzanie OLAP). Rozszerzenia te mog mie charakter teoretyczny w formie propozycji umieszczenia ich w standardzie SQL lub praktyczny w postaci operatorów zaimplementowanych w rozwi zaniach konkretnych producentów systemów bazodanowych umo liwiaj cych relacyjne przetwarzanie analityczne. Słowa kluczowe: OLAP, Bazy danych, rozszerzenia funkcji SOL 1. Wst p Wielowymiarowe operacje OLAP w systemach relacyjnych s przeprowadzane za pomoc zapyta w j zyku SQL. Wi kszo operacji mo e by zrealizowana za pomoc standardowych zapyta w j zyku SQL. W niektórych przypadkach tłumaczenie operacji wielowymiarowych na standard zgodny z j zykiem SQL wymaga wprowadzenia pewnych rozszerze tego j zyka poprzez uwzgl dnienie funkcji w klauzuli GROUP BY oraz definiowanych przez u ytkownika funkcji agreguj cych, które zwracałyby wyniki w klauzuli SELECT [1,2,3]. 2. Rozszerzenia SQL zaimplementowane w bazie Oracle8i Oracle przystosowuj c ósm wersj relacyjnej bazy danych Oracle8i rozszerzył standard SQL o nast puj ce elementy6: rozszerzenie mo liwo ci GROUP BY poprzez zastosowanie CUBE oraz ROLLUP, dodatkowe analityczne funkcje SQL, funkcj liniowej regresji, wyra enie CASE. Według danych producenta wprowadzenie tych rozszerze spowoduje mi dzy innymi: uproszczenie programowania poprzez redukcj ilo ci kodu dla wielu operacji SQL, szybsze i efektywne przetwarzanie zapyta, redukcj ruchu sieciowego poprzez wykonywanie agregacji po stronie serwera, mo liwo przechowywania agregatów, które mog by wykorzystywane przez podobne zapytania. ROLLUP Operator ROLLUP umo liwia konstrukcji SELECT obliczanie rozmaitych poziomów podsumowa oraz sum całkowitych we wskazanych grupach wymiarów. Proste u ycie tego operatora jest spowodowane tym, e jest on ci le zwi zany z klauzul GROUP BY stanowi c jego pojedyncze rozsze- 6 Oracle 8i Data Warehousing Guide, Oracle Corp.s. 5
60 Grzegorz Dzie a, Andrzej Makulski Rozszerzenia j zyka SQL dla operacji rolap w bazie ORACLE8I rzenie. Składnia zapytania z u yciem ROLLUP wygl da nast puj co: select... group by rollup (lista kolumn grupuj cych) ROLLUP jest operacj działaj c w sposób bezpo redni na danych, tworzy podsumy od najni szego poziomu hierarchii do sumy całkowitej według listy grupowania zawartej w klauzuli. W pierwszej kolejno ci obliczane s podstawowe warto ci agregatów podane przez GROUP BY, nast pnie zaczynaj c od pierwszej wymienionej kolumny oblicza warto ci agregatów na wy szych poziomach hierarchii, a do ostatniej kolumny znajduj cej si na li cie. Na koniec jest obliczana suma całkowita. Przeprowadzenie operacji ROLLUP na danych, których liczba kolumn grupuj cych wynosi n spowoduje wygenerowanie podsum na (n+1)-poziomach. Działanie operatora ROLLUP mo na zobrazowa na przykładzie bazy danych nale cej do firmy sprzedaj cej i wypo yczaj cej ta my video. Baza danych oparta jest na kostce, której wymiarami s : Time (1996, 1997), Department (Video Sprzeda, Video Rentals), Region (East, West, Central), Jednym z elementów kostki jest warto okre laj ca zysk (profit). Zapytanie tworz ce szczegółowy raport podsumowuj cy zyski b dzie miało nast puj c posta : select time, region, department, sum(profit) as profit from sprzedaz group by rollup (time, region, department); Wynik działania tego zapytania b dzie zawierał: a) zagregowane wiersze wygenerowane przez GROUP BY bez u ycia ROLLUP, b) wiersze zawieraj ce podsumy pierwszego poziomu zagregowane dla oddziału (department) przy u yciu ka dej kombinacji czasu (time) i regionu (region), c) wiersze zawieraj ce podsumy drugiego poziomu agregowane dla oddziału (department) i regionu (region) przy u yciu ka dej warto ci czasu, d) wiersz zawieraj cy sum całkowit (grand total). Tabela (1) zawiera wynik zwrócony przez zapytanie. Symbolami ostatniej kolumny oznaczono poszczególne fazy wykonywania si operacji ROLLUP. Warto ci NULL s wy wietlane jedynie dla czytelno ci, w oryginalnej odpowiedzi bazy Oracle komórki b d puste. Tabela 1. Agregacja z wykorzystaniem ROLLUP na danych 3-wymiarowych Time Region Departament Profit 1996 Central VideoRental 75000 A 1996 Central VideoSprzedaz 74000 A 1996 Central NULL 149000 B 1996 East VideoRental 89000 A 1996 East VideoSprzedaz 115000 A 1996 East NULL 204000 B 1996 West VideoRental 87000 A 1996 West VideoSprzedaz 86000 A 1996 West NULL 173000 B
POLSKIE STOWARZYSZENIE ZARZ DZANIA WIEDZ Seria: Studia i Materiały, nr 17, 2008 61 Time Region Departament Profit 1996 NULL NULL 526000 C 1997 Central VideoRental 82000 A 1997 Central VideoSprzedaz 85000 A 1997 Central NULL 167000 B 1997 East VideoRental 101000 A 1997 East VideoSprzedaz 137000 A 1997 East NULL 238000 B 1997 West VideoRental 69000 A 1997 West VideoSprzedaz 97000 A 1997 West NULL 193000 B 1997 NULL NULL 598000 C 1997 NULL NULL 1124000 D Rozszerzenie j zyka SQL w bazie Oracle8i umo liwia równie przeprowadzanie cz ciowej operacji zwijania (PARTIAL ROLLUP) (tab. 2.). Operacja ta polega na obliczaniu tylko niektórych sum cz ciowych. Ró nica w składni pomi dzy zwijaniem całkowitym oraz cz ciowym polega oddzielnym wskazaniu parametrów dla operatora GROUP BY oraz dla ROLLUP: group by expr1, rollup(expr2,expr3); W tym przypadku PARTIAL ROLLUP tworzy podsumy na (2+1=3) poziomach agregacji, tj. na poziomie (expr1, expr2, expr3), (expr1, expr2) i (expr1). Wa n cech tego zapytania jest fakt, e nie jest obliczana suma całkowita (grand total). Przykładem zastosowania operatora zwijania cz ciowego mo e by nast puj ce zapytanie: select time, region, department, sum(profit) as profit from sprzedaz group by time, rollup(region, dept); Wynik działania tego zapytania b dzie składał si z: a) zagregowanych wierszy wygenerowanych przez GROUP BY bez u ycia ROLLUP, b) podsum pierwszego poziomu zagregowanych dla oddziału (department) przy u yciu ka dej kombinacji czas (time) i regionu (region), c) podsum drugiego poziomu zagregowanych dla regionu (region) i oddziału (department) dla ka dej warto ci czasu.
62 Grzegorz Dzie a, Andrzej Makulski Rozszerzenia j zyka SQL dla operacji rolap w bazie ORACLE8I Tabela 2. Wyniki zwijania cz ciowego (PARTIAL ROLLUP) dla przykładowych danych Time Region Departament Profit 1996 Central VideoRental 75000 A 1996 Central VideoSprzedaz 74000 A 1996 Central NULL 149000 B 1996 East VideoRental 89000 A 1996 East VideoSprzedaz 115000 A 1996 East NULL 204000 B 1996 West VideoRental 87000 A 1996 West VideoSprzedaz 86000 A 1996 West NULL 173000 B 1996 NULL NULL 526000 C 1997 Central VideoRental 82000 A 1997 Central VideoSprzedaz 85000 A 1997 Central NULL 167000 B 1997 East VideoRental 101000 A 1997 East VideoSprzedaz 137000 A 1997 East NULL 238000 B 1997 West VideoRental 69000 A 1997 West VideoSprzedaz 97000 A 1997 West NULL 193000 B 1997 NULL NULL 598000 C U ycie operacji ROLLUP wymaga mniejszego zapotrzebowania na moc obliczeniow ni odpowiednie zapytanie zło one z unii podzapyta. Na przykład aby zast pi ROLLUP oparty na 4 kolumnach nale y zastosowa zapytanie składaj ce si z 5 podzapyta poł czonych funkcj UNION. Ka de z tych pi ciu podzapyta wymaga oddzielnego dost pu do tabeli (tabela jest przegl dana pi ciokrotnie), przy czym ROLLUP mo e wykona si z pojedynczym dost pem (tabela jest przegl dana jednokrotnie). Zast pienie zapytania tradycyjnego, zapytaniem opartym o ROLLUP zredukuje dost p do tabel o 80%. Oracle Corp. zaleca stosowanie ROLLUP w zapytaniach obliczaj cych sumy cz ciowe, w szczególno ci do: wyliczania sum cz ciowych opartych o wymiar maj cy charakter chronologiczny ROLLUP(y, m, day) lub geograficzny ROLLUP(country, state, city), generowania tymczasowych tabel podsumowuj cych przez administratorów hurtowni. CUBE Podsumy wygenerowane za pomoc ROLLUP stanowi tylko cz podsum, które mo na wygenerowa dla wszystkich mo liwych kombinacji wymiarów. Wygenerowanie danych, które maj by umieszczone np. w zbiorze tabel przestawnych (cross-tabular) za pomoc ROLLUP wymaga zastosowania kilkakrotnego tego zapytania za ka dym razem zmieniaj c kolejno kolumn, które maj by grupowane. Du o prostszym sposobem jest u ycie do tego celu w zapytaniu operatora
POLSKIE STOWARZYSZENIE ZARZ DZANIA WIEDZ Seria: Studia i Materiały, nr 17, 2008 63 CUBE. Jako operator słu cy do analizy danych operator CUBE oferuje niespotykan dot d elastyczno analizy danych n-wymiarowych. Zastosowanie do analizy operatora CUBE pokazuje rysunek 1. CUBE umo liwia konstrukcji SELECT obliczenie podsum dla ka dej mo liwej kombinacji grupy wymiarów oraz sum całkowitych. Jak ju wcze niej wspomniano, wynik zapytania zawieraj cego operator CUBE mo e zosta przedstawiony za pomoc tabeli przestawnej. Podobnie jak w przypadku ROLLUP, u ycie operatora CUBE jest stosunkowo proste, poniewa stanowi on pojedyncze rozszerzenie klauzuli GROUP BY. Składnia zapytania opartego o CUBE wygl da nast puj co: select... group by cube (lista kolumn grupuj cych) Rys. 1. Porównanie mo liwo ci 3-wymiarowego operatora CUBE do 2-wymiarowej tabeli przestawnej, 1-wymiarowego grupowania z sum i agregatu maj cego charakter punktowy ródło: www.olapreport.com [4] CUBE oblicza podsumy na podstawie listy kolumn (wymiarów) podanych w zapytaniu. Je eli w zapytaniu zostanie podane n-kolumn, to wynik zapytania b dzie zawierał 2n agregatów dla ró nych kombinacji wymiarów. Przykład zastosowania operatora w przypadku bazy danych firmy
64 Grzegorz Dzie a, Andrzej Makulski Rozszerzenia j zyka SQL dla operacji rolap w bazie ORACLE8I wypo yczaj cej/sprzedaj cej kasety wideo (baza została wykorzystana przy operatorze ROLLUP) wygl da nast puj co: select time, region, department, sum(profit) as profit from sprzedaz group by cube (time, region, department); Wynikiem działania tego zapytania b dzie odpowied podana w tabeli 3.9: Tabela 3. Agregacja z wykorzystaniem CUBE dla danych 3-wymiarowych Time Region Department Profit 1996 Central VideoRental 75000 1996 Central VideoSprzedaz 74000 1996 Central NULL 149000 1996 East VideoRental 89000 1996 East VideoSprzedaz 115000 1996 East NULL 204000 1996 West VideoRental 87000 1996 West VideoSprzedaz 86000 1996 West NULL 173000 1996 NULL VideoRental 251000 1996 NULL VideoSprzedaz 275000 1996 NULL NULL 526000 1997 Central VideoRental 82000 1997 Central VideoSprzedaz 85000 1997 Central NULL 167000 1997 East VideoRental 101000 1997 East VideoSprzedaz 137000 1997 East NULL 238000 1997 West VideoRental 96000 1997 West VideoSprzedaz 97000 1997 West NULL 193000 1997 NULL VideoRental 279000 1997 NULL VideoSprzedaz 319000 1997 NULL NULL 598000 NULL Central VideoRental 157000 NULL Central VideoSprzedaz 159000 NULL Central NULL 316000 NULL East VideoRental 190000 NULL East VideoSprzedaz 252000 NULL East NULL 442000 NULL West VideoRental 183000 NULL West VideoSprzedaz 183000 NULL West NULL 366000 NULL NULL VirdeoRental 530000 NULL NULL VideoSprzedaz 594000 NULL NULL NULL 1124000
POLSKIE STOWARZYSZENIE ZARZ DZANIA WIEDZ Seria: Studia i Materiały, nr 17, 2008 65 Wyniki te mo na przedstawi za pomoc kilku tabel przestawnych o wymiarach: time department, time region, department region. Podobnie jak w przypadku PARTIAL ROLLUP istnieje mo liwo ograniczenia agregacji do wymaganych wymiarów. W przypadku PARTIAL CUBE mo na ograniczy podsumy wszystkich mo liwych kombinacji do wymiarów b d cych parametrami CUBE: group by expr1, cube(expr2, expr3) Skonstruowane w ten sposób zapytanie wygeneruje 4 podsumy oparte na: (expr1, expr2, expr3), (expr1, expr2), (expr1, expr3), (expr1). U ywaj c bazy danych wykorzystanej w poprzednich przykładach działanie PARTIAL CUBE mo na przedstawi za pomoc nast puj cego zapytania (tab. 3.): select time, region, department, sum(profit) as profit from sprzedaz group by time cube (region, dept); Zapytanie z operatorem CUBE mo na oczywi cie zast pi zapytanie o konstrukcji UNION ALL składaj ce si kilku podzapyta, z których ka de b dzie obliczało agregat dla jednej ze wszystkich mo liwych kombinacji. Gdyby istniała konieczno sformułowania zapytania z wykorzystaniem standardowych funkcji, które miałoby zwróci wynik tak jak w przypadku zapytania z CUBE okre lonym na 3 wymiarach, to zapytanie to składałoby si z 8-podzapyta. Redukcja w dost pie do tabeli dla zapytania opartego o CUBE przy grupowaniu 4-kolumnowy si ga a 93,75% w porównaniu do zapytania opartego na technikach klasycznych. Zarówno operator ROLLUP jak i CUBE umo liwia zastosowanie w agregacji nast puj cych funkcji: count, avg, min, max, stddev, variance.
66 Grzegorz Dzie a, Andrzej Makulski Rozszerzenia j zyka SQL dla operacji rolap w bazie ORACLE8I Tabela 3. Agregacja z wykorzystaniem PARTIAL CUBE dla danych 3-wymiarowych Time Region Department Profit 1996 Central VideoRental 75,000 1996 Central VideoSprzedaz 74,000 1996 Central NULL 149,000 1996 East Video Rental 89,000 1996 East VideoSprzedaz 115,000 1996 East NULL 204,000 1996 West Video Rental 87,000 1996 West VideoSprzedaz 86,000 1996 West NULL 173,000 1996 NULL Video Rental 251,000 1996 NULL VideoSprzedaz 275,000 1996 NULL NULL 526,000 1997 Central VideoRental 82,000 1997 Central VideoSprzedaz 85,000 1997 Central NULL 167,000 1997 East VideoRental 101,000 1997 East VideoSprzedaz 137,000 1997 East NULL 238,000 1997 West VideoRental 96,000 1997 West VideoSprzedaz 97,000 1997 West NULL 193,000 1997 NULL Video Rental 279,000 1997 NULL VideoSprzedaz 319,000 1997 NULL NULL 598,000 Funkcja COUNT, która jest bardzo cz sto u ywana przy analizie tabel przestawnych jest najcz ciej wykorzystywan funkcj w zapytaniach ROLLUP i CUBE obok funkcji SUM. Bazy danych firmy Oracle, nie umo liwiaj stosowania operatora DISTINCT wraz z ROLLUP lub CUBE ze wzgl du na jego dwojaki charakter. Ograniczenie to ma na celu zmniejszenia ryzyka wyst pienia bł du przy analizie danych. Funkcja GROUPING Funkcja grouping stanowi rozszerzenie funkcji ROLLUP oraz CUBE słu cej do zmiany formatu wyniku wygenerowanego poprzez zapytanie. U ycie tej funkcji jest wymagane, gdy wynik działania zapytania ma by przetwarzany z wykorzystaniem metod numerycznych, a w szczególno ci gdy: konieczne jest rozpoznanie wierszy, w których s zawarte sumy cz ciowe oraz suma całkowita np. przy obliczaniu udziałów procentowych itp.; zapytanie mo e zwróci w wynikowych wierszach warto NULL, która wynika z danych ródłowych, a nie jest warto ci nadawan przez operator CUBE lub ROLLUP (w wierszu podsumy warto NULL danego atrybutu okre la sum po tym wła nie atrybucie).
POLSKIE STOWARZYSZENIE ZARZ DZANIA WIEDZ Seria: Studia i Materiały, nr 17, 2008 67 Działanie funkcji GROUPING polega na zwracaniu warto ci 1 w przypadku gdy dany wiersz wyniku zawiera warto NULL nadan w wyniku działania operatora CUBE lub ROLLUP. Je eli warto NULL wynika z charakteru danych ródłowych w odpowiednim polu jest zwracana warto 0. Ogólna składnia u ycia tej funkcji wygl da w sposób nast puj cy: select... [grouping(kolumny_wymiarów)...]... group by... {cube rollup} (kulumny_wymiarów) Operuj c na bazie danych, wykorzystywanej przy okazji prezentowania poprzednich operatorów mo na sformułowa nast puj ce zapytanie na bazie operatora ROLLUP (tab. 4.): select time, region, department, sum(profit) as profit, grouping (time) as t, grouping (region) as r, grouping (department) as d from sprzedaz group by rollup (time, region, department); Tabela 4. Wynik zapytania ROLLUP z wykorzystaniem funkcji GROUPING Time Region Department Profit T R D 1996 Central VideoRental 75000 0 0 0 1996 Central VideoSprzedaz 74000 0 0 0 1996 Central NULL 149000 0 0 1 1996 East VideoRental 89000 0 0 0 1996 East VideoSprzedaz 115000 0 0 0 1996 East NULL 204000 0 0 1 1996 West VideoRental 87000 0 0 0 1996 West VideoSprzedaz 86000 0 0 0 1996 West NULL 173000 0 0 1 1996 NULL NULL 526000 0 1 1 1997 Central VideoRental 82000 0 0 0 1997 Central VideoSprzedaz 85000 0 0 0 1997 Central NULL 167000 0 0 1 1997 East VideoRental 101000 0 0 0 1997 East VideoSprzedaz 137000 0 0 0 1997 East NULL 238000 0 0 1 1997 West VideoRental 96000 0 0 0 1997 West VideoSprzedaz 97000 0 0 0 1997 West NULL 193000 0 0 1 1997 NULL VideoRental 598000 0 1 1 NULL NULL NULL 1124000 1 1 1 Umieszczenie w strukturze wyniku 3 dodatkowych kolumn umo liwi łatwe przetwarzania numeryczne rezultatu zapytania. Procedura analizuj ca dane kontroluj c warto ci w polach T, R i D w sposób jednoznaczny b dzie mogła okre li charakter danej podsumy poprzez metod maskowania. Wiersze posiadaj ce mask 0 0 1 b d nale ały do podsum pierwszego poziomu,
68 Grzegorz Dzie a, Andrzej Makulski Rozszerzenia j zyka SQL dla operacji rolap w bazie ORACLE8I maska 0 1 1 b dzie charakteryzowała wiersze podsum poziomu drugiego, za maska 1 1 1 b dzie oznaczała sum całkowit. Funkcja grouping mo e okaza si przydatna równie w zapytaniach opartych o operator CUBE. Przedstawiony w tabeli 5. przykład przedstawia wynik zapytania CUBE, który nie mo e by interpretowany w sposób jednoznaczny. Tabela 5. Wynik zapytania CUBE bez u ycia GROUPING Time Region Profit 1996 East 200000 1996 NULL 200000 NULL East 200000 NULL NULL 190000 NULL NULL 190000 NULL NULL 190000 NULL NULL 390000 Warto ci NULL wyst puj ce w wyniku przedstawiony w tabeli 5. wynikaj z: działania operatora CUBE, który umieszcza warto NULL w wierszu dla atrybutu dla którego jest przeprowadzane sumowanie; charakteru danych ródłowych;dla niektórych rekordów pola atrybutów time lub region były wypełnione warto ciami NULL. W celu poprawienia czytelno ci wyniku nale y zastosowa kombinacj funkcji grouping i decode w nast puj cym zapytaniu (tab. 6.): Select decode(grouping(time), 1, 'all times', time) as time, decode(grouping(region), 1, 'all regions', 0, null)) as region, sum(profit) as profit from sprzedaz group by cube(time, region); Tabela 6. Wynik działania operator CUBE z funkcjami GROUPING i DECODE Time Region Profit 1996 East 200000 1996 All Regions 200000 All Times East 200000 NULL NULL 190000 NULL All Regions 190000 All Times NULL 190000 All Times All Regions 390000 Zastosowanie DECODE w powy szym zapytaniu umo liwia rozpoznanie wierszy zawieraj cych podsumy i zamian w nich warto ci NULL na okre lon w zapytaniu. Jak ju wcze niej wspomniano funkcja GROUPING zwraca 1 je eli wiersz zawiera warto agregatu lub w ka dym innym przypadku 0. Funkcja DECODE w nast puj cym fragmencie zapytania:
POLSKIE STOWARZYSZENIE ZARZ DZANIA WIEDZ Seria: Studia i Materiały, nr 17, 2008 69 decode(grouping(time), 1, 'all times', time) as time, dla warto ci 1 uzyskanej od GROUPING podstawia tekst all times, a dla warto ci 0 warto czasu przechowywan w tabeli ródłowej, która mo e by liczb lub warto ci NULL. Funkcje Analityczne Przetwarzanie analityczne OLAP wymaga du ej ilo ci danych, które s w odpowiedni sposób przetwarzane. Pocz tkowo, wszystkie operacje analityczne były przeprowadzane za pomoc odpowiednich narz dzi po stronie klienta. W obecnych systemach baz danych przystosowanych do przetwarzania w technologii OLAP mo na zaobserwowa skłonno producentów do umieszczania specjalizowanych funkcji analitycznych, które mog wykonywa analiz po stronie serwera. Przykładem takich funkcji mog by funkcje zaimplementowane w bazie danych Oracle8i, znajduj ce si obecnie w standardzie ANSI SQL2000, które przedstawia tabela 7.: Funkcja Ranking Windowing Reporting Tabela 7. Funkcje analityczne zaimplementowane w Oracle8i Zastosowanie obliczanie rankingów, obliczanie rednich ł cznych i chwilowych. Współpracuje z nast pujacymi funkcjami: - SUM - AVG - IN - MAX - COUNT - VARIANCE - STDEV - FIRST_VALUE - LAST_VALUE - oraz nowymi funkcjami statystycznym Obliczanie udziałów. Współpracuje z nast puj cymi funkcjami: - SUM - AVG - MIN - MAX - COUNT (z/bez DISTINCT) - VARIANCE - STDDEV - RATIO_TO_REPORT - oraz nowymi funkcjami statystycznym LAG/LEAD Statistic Funkcje te mog si ga do warto ci okre lonych atrybutów znajduj cych si w s siednich wierszach w tej samej partycji. obliczanie regresji liniowej, współczynnik nachylenia, przeci cie itp.
70 Grzegorz Dzie a, Andrzej Makulski Rozszerzenia j zyka SQL dla operacji rolap w bazie ORACLE8I Sposób przetwarzania funkcji analitycznych obrazuje rysunek 2. 3. Podsumowanie Rysunek 2. Kolejno przetwarzania zapyta analitycznych Zbiór funkcji oferowanych przez Oracle, które nale do grupy funkcji analitycznych i nie s jednocze nie obj te standardem SQL 92 lub 99 jest bardzo du y. Funkcje te umo liwiaj szczegółowe przetwarzanie analityczne pod k tem analizy statystycznej, finansowej, ekonomicznej, raportowania itp. Ka da z nich posiada wiele parametrów umo liwiaj cych zdefiniowanie postaci wynikowej. Bardzo wa n rzecz jest równie fakt, e funkcje te działaj w kombinacjach z opisanymi wcze niej operatorami CUBE oraz ROLLUP. Jedn z najcz ciej wykorzystywanych funkcji analitycznych jest funkcja nale ca do grupy funkcji rankingowych słu ca do obliczania pozycji danego rekordu ze zbioru danych na li cie uporz dkowanej w odpowiedni sposób według wybranych warto ci miar. Bibliografia 1. Oracle 8i Data Warehousing Guide, Oracle Corp. 1999. 2. Oracle 8i. Concepts, Oracle Corp. 1999. 3. Materiały informacyjne: Oracle OLAP Technology, Oracle Corp. 1999. 4. N. Pendse: OLAP Report 2000, http://www.olapreport.com.
POLSKIE STOWARZYSZENIE ZARZ DZANIA WIEDZ Seria: Studia i Materiały, nr 17, 2008 71 EXPANDING SQL LANGUAGE FOR THE ROLAP OPERATIONS IN THE ORACLE8I DATABASE Summary In the paper elements of expanding SQL query language for the ROLAP operations in the Oracle8i database were presented. Their task is supporting the data processing to make possible analytical OLAP processing. Those expands can have theoretical dimension in the form of the proposals to put them in the SQL standard or practical one including operators implemented in solutions of concrete producers of database systems which enable relational analytical processing. Keywords: OLAP, databases, expanding the SOL function Grzegorz Dzie a Katedra Informatyki w Zarz dzaniu, Wydział Zarz dzania Uniwersytet Technologiczno Przyrodniczy w Bydgoszczy 85-970 Bydgoszcz, ul. Kaliskiego 7 e-mail: zis@utp.edu.pl