Při vytvoření aplikace a mulditimenzionální databáze OLAP komponenta DB2 OLAP Server provede kategorizaci nové aplikace a databáze a vytvoří sadu relačních tabulek, které jsou také označovány jako hvězdicové schéma. Kromě toho komponenta DB2 OLAP Server vytvoří a zajistí správu řady pohledů, které aplikaci zjednoduší přístup SQL k multidimenzionálním datům. Chcete-li přistupovat k multidimenzionálním datům pomocí pohledů, můžete použít vlastní aplikace a standardní dotazovací nástroje. Návrh některých aplikací maximálně využívá výhody způsobu uložení dat ve hvězdicovém schématu vytvořeném komponentou DB2 OLAP Server.
Úplný seznam pohledů spravovaných komponentou DB2 OLAP Server:
Komponenta DB2 OLAP Server ukládá všechny základní tabulky a pohledy ve schématu jméno_uživatele, kde argument jméno_uživatele představuje uživatelské jméno přiřazené komponentě DB2 OLAP Server. V příkladech SQL v této kapitole je jako jméno schématu použito jméno OLAPSERV.
Všechna jména pohledů jsou uváděna velkými písmeny. Jména pohledů neuvádějte v uvozovkách. Komponenta DB2 OLAP Server sestaví jména pohledů a uloží je do pohledů katalogu. Aplikace SQL pak mohou vyvolat dotaz na jména pohledů uložená v pohledech katalogu. Primární pohledy DB2 OLAP Server jsou uvedeny na obrázku Obrázek 9.
Obrázek 9. Schéma DB2 OLAP Server
![]() |
Ve schématu jméno_uživatele komponenta DB2 OLAP Server používá jeden pohled katalogu krychle. Tento pohled obsahuje jeden řádek pro každou krychli. Pohled poskytuje podrobné údaje o všech aplikacích a krychlích OLAP uložených ve schématu. V pohledu katalogu krychle jsou uloženy všechny aplikace a databáze OLAP spravované komponentou DB2 OLAP Server.
Jméno pohledu katalogu krychle je CUBECATALOGVIEW. Stejně jako u všech ostatních pohledů platí, že i tento pohled patří do schématu přiřazeného komponentě DB2 OLAP Server.
Sloupce v pohledu katalogu krychle jsou popsány v tabulce Tabulka 14.
Tabulka 14. Obsah pohledu katalogu krychle
Příkaz SQL pro získání seznamu aplikací OLAP:
SELECT DISTINCT APPNAME FROM OLAPSERV.CUBECATALOGVIEW
Příkaz SQL pro získání seznamu multidimenzionálních databází v aplikaci Sample:
SELECT CUBENAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample'
Příkaz SQL pro získání jmen pohledů pro multidimenzionální databázi Basic v aplikaci Sample:
SELECT CUBEVIEWNAME,FACTVIEWNAME,STARVIEWNAME,ALIASIDVIEWNAME,LROVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Pohled krychle a pohledy dimenzí obsahují informace o dimenzích a o členech v relační krychli. Pro každou relační krychli existuje jeden pohled krychle a pro každou dimenzi v rámci relační krychle existuje jeden pohled dimenze. Dotazem na tyto pohledy lze získat řadu atributů, které jsou přiřazeny dimenzím a členům v osnově OLAP.
Pro relační krychli, kterou spravuje komponenta DB2 OLAP Server, existuje jeden pohled krychle. Pohled krychle obsahuje jeden řádek pro každou dimenzi relační krychle. Pohled slouží k získání informací o dimenzích krychle.
Jméno pohledu krychle je načteno ze sloupce CubeViewName pohledu katalogu krychle.
Sloupce v pohledu krychle jsou popsány v tabulce Tabulka 15.
Tabulka 15. Obsah pohledu krychle
Chcete-li přistoupit k datům v pohledu krychle, aplikace musí nejprve určit jméno pohledu krychle v pohledu katalogu krychle.
Chcete-li například zjistit jméno pohledu krychle pro databázi Basic v aplikaci Sample, můžete vyvolat dotaz na databázi pomocí příkazu SQL:
SELECT CUBEVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Výsledek dotazu může vypadat takto:
OLAPSERV.SAMPBASI_CUBEVIEW
Seznam jmen dimenzí a jmen odpovídajících pohledů dimenzí pro databázi Basic:
SELECT DIMENSIONNAME.DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW
Chcete-li zobrazit seznam jmen hustých dimenzí databáze Basic, proveďte tento příkaz:
SELECT DIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE = 0
Chcete-li určit jména dimenzí, která nejsou nastavena jako kotvicí a která slouží pro pojmenování sloupců ve hvězdicovém pohledu, proveďte tento příkaz:
SELECT RELDIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE <> 2
Chcete-li vrátit jméno pohledu relačních atributů pro dimenzi Product, proveďte tento příkaz:
SELECT RATVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Product'
Jméno pohledu dimenze získáte ze sloupce DimensionViewName pohledu krychle.
Sloupce v pohledu dimenze jsou popsány v tabulce Tabulka 16.
Tabulka 16. Obsah pohledu dimenze
Jméno | Typ | Velikost | Obsah |
---|---|---|---|
MemberName | VarChar | 80 | Jméno člena. |
RelMemberName | VarChar | 18 | Pouze kotvicí dimenze. Jméno člena DB2 OLAP Server. Toto
jméno je použito k pojmenování sloupců v pohledu faktů a ve hvězdicovém
pohledu, které odpovídají členům kotvicí dimenze. Představuje jedinečné
jméno při porovnání se všemi ostatními jmény členů kotvicí dimenze a jmény
dimenzí relační krychle, které nejsou kotvicí. Jedná se o upravenou
verzi sloupce MemberName. Ve sloupci MemberName může být nutné provést
tyto změny:
|
RelMemberID | Integer | Není | Identifikátor DB2 OLAP Server pro daného člena. Tento identifikátor se používá pro propojení tabulky dimenzí s tabulkou faktů. |
ParentRelId | Integer | Není | Relační identifikátor rodičovského člena v osnově OLAP. Pro člena nejvyšší úrovně je tato hodnota NULL. |
LeftSiblingRelId | Integer | Není | Relační identifikátor sourozeneckého člena na levé straně v osnově OLAP. Pro členy, kteří nemají levého sourozence, je tato hodnota NULL. |
Status | Integer | Není | Stav daného člena může být kombinací následujících hodnot:
|
CalcEquation | Long VarChar (pracovní stanice); VarChar (OS/390) | 32700 (pracovní stanice); 250 (OS/390) | Rovnice předvolené kalkulace pro kalkulované členy. Počítejte s tím, že rovnice předvolené kalkulace nemusí být rovnice použitá pro výpočet hodnoty člena, pokud pro výpočet relační krychle je v kalkulačním skriptu určena jiná kalkulace. |
UnarySymbol | Small Integer | Není | Symbol unární kalkulace:
|
AccountsType | Integer | Není | Tento atribut se používá pouze pro dimenzi Účty. Může obsahovat
kombinaci následujících hodnot:
|
NoCurrencyConv | Small Integer | Není | Nastavení konverze měny:
|
CurrencyMemberName | VarChar | 80 | K tomuto členu je přidruženo jméno člena z měnové krychle. |
GenerationNumber | Integer | Není | Číslo generace pro tohoto člena. |
GenerationName | VarChar | 80 | Jméno generace pro tohoto člena. |
LevelNumber | Integer |
| Číslo úrovně pro tohoto člena. |
LevelName | VarChar | 80 | Jméno úrovně pro tohoto člena. |
jméno tabulky aliasů Pro každou tabulku aliasů OLAP použitou v osnově existuje jeden sloupec aliasu. | VarChar | 80 | Alias pro daného člena v přidružené tabulce aliasů OLAP. Pokud alias není pro člena uveden, je tato hodnota Null. Viz oddíl Použití pohledů ID-alias. |
jméno sloupce relačních atributů Pro každý uživatelský atribut RatCol existuje jeden sloupec relačních atributů. | Datový typ určený při vytvoření sloupce relačního atributu. | Velikost určená při vytvoření sloupce relačního atributu. | Hodnota relačního atributu pro daného člena. |
Chcete-li přistoupit k datům v pohledu dimenze, aplikace musí nejprve určit jméno pohledu dimenze z pohledu krychle.
Chcete-li například zjistit jméno pohledu dimenze pro dimenzi Time v databázi Basic, můžete vyvolat dotaz na databázi pomocí příkazu SQL:
SELECT DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Time'
Výsledek dotazu může vypadat takto:OLAPSERV.SAMPBASID_TIME
Chcete-li zobrazit seznam jmen členů pro dimenzi Time, proveďte tento příkaz:
SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME
Komponenta DB2 OLAP Server vytváří a udržuje dva pohledy tabulky faktů a hvězdicového schématu:
Vzhledem k tomu, že tabulka faktů obsahuje hodnoty s různými úrovněmi agregace, musíte se při psaní aplikace SQL provádějící agregaci ujistit, že sada členů vybraných v jednotlivých dimenzích má stejnou úroveň agregace. V opačném případě budou vaše agregace nesprávné. Jednou z možností, jak tomuto požadavku vyhovět, je zahrnout do tabulky dimenzí omezující podmínku pro pole s číslem generace nebo s číslem úrovně.
Tabulka faktů vytvořená komponentou DB2 OLAP Server obsahuje jeden sloupec pro každou dimenzi, která není určena jako kotvicí, a jeden sloupec pro každého člena kotvicí dimenze, který uchovává data. Tabulka faktů odpovídající osnově popsané v oddílu Obrázek 9 obsahuje tyto sloupce:
Sloupce dimenzí uchovávají identifikátory členů, které odkazují na členy každé nekotvicí dimenze. Identifikátory členů lze v pohledech dimenzí mapovat na jména členů. Ve sloupcích kotvicích členů jsou uloženy skutečné datové hodnoty. Členy kotvicí dimenze lze mapovat na sloupce pohledu faktů pomocí pohledu dimenzí pro kotvicí dimenzi.
Komponenta DB2 OLAP Server používá pro sloupce tabulky faktů interní jména a pro členy interní identifikátory. V pohledu faktů jsou interní jména sloupců nahrazena jmény dimenzí a členů, ale není provedeno mapování identifikátorů členů ve sloupcích dimenzí na příslušná jména členů. Ve hvězdicovém pohledu jsou interní jména sloupců nahrazena jmény dimenzí a členů a je provedeno mapování identifikátorů členů ve sloupcích dimenzí na jména členů na základě propojení tabulky faktů s tabulkami dimenzí.
Přestože lze jako kotvicí dimenzi určit kteroukoli hustou dimenzi, pokud přistupujete k pohledu faktů a ke hvězdicovému pohledu z aplikací SQL a spouštíte dotazy ad-hoc, nejpřirozenější mapování získáte, pokud jako kotvicí dimenzi určíte dimenzi Účty.
Jméno pohledu faktů je uloženo ve sloupci FactViewName pohledu katalogu krychle.
Pohled faktů obsahuje proměnný počet sloupců dvou typů:
Podrobnosti o obou typech sloupců, které může obsahovat pohled faktů, jsou
uvedeny v tabulce Tabulka 17.
Tabulka 17. Obsah pohledu faktů
Chcete-li přistoupit k datům v pohledu faktů, aplikace musí nejprve určit jméno pohledu faktů z pohledu katalogu krychle.
Chcete-li například zjistit jméno pohledu faktů pro databázi Basic v aplikaci Sample, můžete použít tento příkaz SQL:
SELECT FACTVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Výsledek dotazu může vypadat takto:
OLAPSERV.SAMPBASI_FACTVIEW
Pokud vaše aplikace sleduje hodnoty RelMemberID pro členy, můžete dotaz směrovat přímo pohledu faktů. Chcete-li například vybrat datové hodnoty pro produkt s identifikátorem RelMemberId 3 (100-20) pro oblast RelMemberId 2 (East) v době RelMemberID 4 (Q3):
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW WHERE PRODUCT=3 AND MARKET=2 AND TIME=4
Dotazy na tabulku faktů jsou obvykle propojeny s pohledy dimenzí. Ekvivalentní dotaz k předchozímu příkladu, který využívá propojení, vypadá takto:
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW, OLAPSERV.SAMPBASID_TIME, OLAPSERV.SAMPBASID_MARKET, OLAPSERV.SAMPBASID_PRODUCT, WHERE OLAPSERV.SAMPBASID_TIME.MEMBERNAME='Q3' AND OLAPSERV.SAMPBASID_PRODUCT.MEMBERNAME='100-20' AND OLAPSERV.SAMPBASID_MARKET.MEMBERNAME='East' AND OLAPSERV.SAMPBASI_FACTVIEW.TIME=OLAPSERV.SAMPBASID_TIME.RELMEMBERID AND OLAPSERV.SAMPBASI_FACTVIEW.PRODUCT=OLAPSERV.SAMPBASID_PRODUCT.RELMEMBERID AND OLAPSERV.SAMPBASI_FACTVIEW.MARKET=OLAPSERV.SAMPBASID_MARKET.RELMEMBERID
Jméno hvězdicového pohledu je uloženo ve sloupci StarViewName pohledu katalogu krychle.
Hvězdicový pohled obsahuje proměnný počet sloupců dvou typů:
Podrobnosti o obou typech sloupců, které může obsahovat hvězdicový pohled, jsou uvedeny v tabulce Tabulka 18.
Tabulka 18. Obsah hvězdicového schématu
Chcete-li přistoupit k datům ve hvězdicovém pohledu, aplikace musí nejprve určit jméno hvězdicového pohledu z pohledu katalogu krychle.
Chcete-li například zjistit jméno hvězdicového pohledu pro databázi Basic v aplikaci Sample, můžete použít tento příkaz SQL:
SELECT STARVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='SAMPLE' AND CUBENAME='BASIC'
Výsledek dotazu může vypadat takto: OLAPSERV.SAMPBASI_STARVIEW
Chcete-li vybrat datové hodnoty pro produkt 100-10 v regionu Central pro první čtvrtletí, použijte dotaz:
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE PRODUCT='100-10' AND MARKET='Central' AND TIME='Q1'
Chcete-li vybrat všechny ztrátové produkty v centrálním regionu pro druhé čtvrtletí, použijte dotaz:
SELECT PRODUCT,PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET='Central' AND TIME='Q2' AND PROFIT < 0
Ne všichni členové hvězdicového pohledu jsou na stejné úrovni hierarchie. Při vytváření dotazů SQL provádějících agregační operace je proto nutné postupovat opatrně. V případě, že vybraní členové v dimenzi nejsou na stejné úrovni, dojde k dvojité agregaci.
V následujícím příkladu je ukázán příkaz SQL, který zobrazí členy vybrané na různých úrovních hvězdicového pohledu. (Některé položky prodeje budou započítány dvakrát, neboť jsou provedeny agregační součty na dvou úrovních).
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Central','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','1996')
Předpokládejme, že stát Illinois je součást centrálního regionu (Central) a první čtvrtletí (Q1) patří do roku 1996. Dotaz pak vrátí tabulku PROFIT se součty na úrovních států i regionu a na úrovni čtvrtletí i roku. Vzhledem k tomu, že centrální region již obsahuje data pro stát Illinois, data Illinois a Q1 jsou započítána v součtu dvakrát. Pokud chcete opravit dotaz SQL, aby sčítal prodeje pro dva státy v centrálním regionu v průběhu dvou různých čtvrtletí, můžete vyjít z následujícího příkladu:
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Indiana','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','Q2')