Amikor OLAP alkalmazást és többdimenziós adatbázist hoz létre, a DB2 OLAP Server termék az új alkalmazást és adatbázist katalogizálja, valamint egy csillagsémának nevezett relációs táblahalmazt hoz létre. A DB2 OLAP Server továbbá létrehoz és kezel több nézetet. Ezek leegyszerűsítik az SQL alkalmazás hozzáférését a többdimenziós adatokhoz. Ezen nézetek alkalmazásával a többdimenziós adatok egyedi alkalmazások és szabványos lekérdező eszközök révén egyaránt hozzáférhetők. Egyes alkalmazások teljes mértékben kihasználják azt a tényt, hogy az adatok a DB2 OLAP Server által létrehozott csillagsémában vannak tárolva.
A következő lista felsorolja a DB2 OLAP Server által kezelt összes nézetet:
A DB2 OLAP Server az összes alaptáblát és -nézetet a felhasználónév sémában tárolja. A felhasználónév a DB2 OLAP Server-hez rendelt felhasználói azonosító. E fejezet SQL példáiban az OLAPSERV sémanév szerepel.
Minden nézetnév nagybetűs. A nézetneveket nem szabad idézőjelek közé zárni. A DB2 OLAP Server összeállítja a nézetneveket és katalógusnézetekben tárolja azokat. Az SQL alkalmazások a katalógusnézetekből kérdezhetik le a nézetneveket. Az ábra 9 mutatja be az elsődleges DB2 OLAP Server nézeteket.
![]() |
A DB2 OLAP Server egy kockakatalógus-nézetet használ a felhasználónév sémában. Ez a nézet minden kockáról egy sort tartalmaz. Ennek a nézetnek a használatával nyerhet információt egy adott sémában tárolt összes OLAP alkalmazásról és kockáról. A kockakatalógus-nézet az összes DB2 OLAP Server által kezelt OLAP alkalmazást és adatbázist katalogizálja.
A kockakatalógus-nézet neve CUBECATALOGVIEW. Az összes többi nézethez hasonlóan ez is a DB2 OLAP Server-hez rendelt séma tulajdona.
táblázat 14: a kockakatalógus-nézet oszlopait mutatja.
táblázat 14. A kockakatalógus-nézet tartalma
Ennek az SQL utasításnak a segítségével kérdezheti le az OLAP alkalmazások listáját:
SELECT DISTINCT APPNAME FROM OLAPSERV.CUBECATALOGVIEW
Ennek az SQL utasításnak a használatával kérdezheti le a Sample alkalmazásban lévő többdimenziós adatbázisok listáját:
SELECT CUBENAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample'
Ennek az SQL utasításnak a segítségével kérdezheti le a Basic többdimenziós adatbázis nézeteinek nevét a Sample alkalmazásban:
SELECT CUBEVIEWNAME,FACTVIEWNAME,STARVIEWNAME,ALIASIDVIEWNAME,LROVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
A kockanézet és a dimenziónézetek tartalmazzák az információt a relációs kocka dimenzióiról és tagjairól. Minden relációs kockához egy kockanézet van, és a kockán belül minden dimenzióhoz egy dimenziónézet. Ezeknek a nézeteknek a segítségével lehet lekérdezni számos, az OLAP körvonalban lévő dimenziókhoz és tagokhoz rendelt attribútumot.
Minden, a DB2 OLAP Server által kezelt relációs kockához egy kockanézet van. A kockanézet a relációs kocka minden dimenziójáról egy sort tartalmaz. E nézetből kapható tájékoztatás a kocka dimenzióiról.
A kockanézet neve a kockakatalógus-nézet CubeViewName oszlopából származik.
táblázat 15: a kockanézet oszlopait mutatja.
táblázat 15. A kockanézet tartalma
Ahhoz, hogy egy alkalmazás hozzáférjen a kockanézet adataihoz, először ki kell keresnie a kockanézet nevét a kockakatalógus-nézetből.
Például a Sample alkalmazásban levő Basic adatbázis kockanézetének nevét a következő SQL utasítás adja vissza:
SELECT CUBEVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
A lekérdezés lehetséges eredménye:
OLAPSERV.SAMPBASI_CUBEVIEW
A dimenziónevek és a hozzájuk tartozó dimenziónézet-nevek listázása a Basic adatbázis esetén:
SELECT DIMENSIONNAME.DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW
A Basic adatbázis sűrű dimenzióihoz tartozó dimenziónevek listázása:
SELECT DIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE = 0
A csillagnézetben oszlopnévként használt, nem kapcsoló dimenziónevek listája:
SELECT RELDIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE <> 2
A Product dimenzió relációs attribútumnézete nevének visszaadásához:
SELECT RATVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Product'
A dimenziónézet neve a kockanézet DimensionViewName oszlopából kapható meg.
táblázat 16: a dimenziónézet oszlopait mutatja.
táblázat 16. A dimenziónézet tartalma
Név | Típus | Méret | Tartalom |
---|---|---|---|
MemberName | VarChar | 80 | A tag neve. |
RelMemberName | VarChar | 18 | Csak kapcsolódimenzió. A DB2 OLAP Server tagnév. Ez a név
olyan oszlopnév a tény és a csillagnézetben, amely a kapcsolódimenzió
tagjainak felel meg. A név egyedi a relációs kockán belül az a
kapcsolódimenzió tagneveihez és a nem kapcsoló dimenziók neveihez
képest. A MemberName módosított változata. A MemberName-en
esetleg végrehajtandó változtatások:
|
RelMemberID | Integer | Nincs | A tag DB2 OLAP Server-en belüli azonosítója. Ez az azonosító kapcsolja össze a dimenzió táblát a tény táblával. |
ParentRelId | Integer | Nincs | A tag szülőjének relációs azonosítója az OLAP körvonalban. A legfelső szintű tagnál az érték NULL. |
LeftSiblingRelId | Integer | Nincs | A tag bal testvérének relációs azonosítója az OLAP körvonalban. Az érték NULL olyan tagoknál, melyeknek nincs bal testvérük. |
Állapot | Integer | Nincs | A tag állapota a következők kombinációja lehet:
|
CalcEquation | Long VarChar (munkaállomás); VarChar (OS/390) | 32700 (munkaállomás); 250 (OS/390) | Az alapértelmezett számítóegyenlet számított tagoknál. Fontos, hogy az alapértelmezett számító egyenlet esetleg más, mint a tag értékét kiszámító egyenlet, ha más számítás van megadva a relációs kockát kiszámító számításleíró parancsfájlban. |
UnarySymbol | Small Integer | Nincs | Egy operandusú (unáris) műveleti jel:
|
AccountsType | Integer | Nincs | Ez az attribútum csak az Accounts dimenzióban használatos. A
következő értékek kombinációja lehet:
|
NoCurrencyConv | Small Integer | Nincs | Pénznem-átváltási beállítás:
|
CurrencyMemberName | VarChar | 80 | A pénznem kockában a taghoz társított tagnév. |
GenerationNumber | Integer | Nincs | A tag generációszáma. |
GenerationName | VarChar | 80 | A tag generációneve. |
LevelNumber | Integer |
| A tag szintszáma. |
LevelName | VarChar | 80 | A tag szintneve. |
fedőnévtábla-név Minden, a körvonalban használt OLAP fedőnévtáblához egy fedőnév oszlop tartozik. | VarChar | 80 | Ennek a tagnak a fedőneve egy kapcsolódó OLAP fedőnévtáblában. Ha egy tagnak nincs fedőneve, ez az érték null. Lásd: Fedőnév-azonosító nézet használata. |
relációs tulajdonság oszlopának neve Minden egyes RatCol felhasználó által megadott attribútumhoz tartozik egy relációs tulajdonságot tartalmazó oszlop. | A relációs tulajdonság oszlopának létrehozásakor megadott adattípus. | A relációs tulajdonság oszlopának létrehozásakor megadott méret. | Ennek a tagnak a relációstulajdonság-értéke. |
Ahhoz, hogy egy alkalmazás hozzáférjen a dimenziónézet adataihoz, először ki kell keresnie a dimenziónézet nevét a kockakatalógus-nézetből.
Például a Sample alkalmazásbeli Basic adatbázis Time dimenziója nézetének nevét a következő SQL utasítás közli:
SELECT DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Time'
A lekérdezés lehetséges eredménye: OLAPSERV.SAMPBASID_TIME
A Time dimenzióban lévő tagnevek listázása:
SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME
A DB2 OLAP Server létrehoz és fenntart két nézetet a csillagséma ténytáblájáról.
Mivel a ténytábla különböző összesítési szintű értékeket tartalmaz, összesítést tartalmazó SQL alkalmazások írásakor figyelni kell, hogy az egyes dimenziókból kiválasztott tagok halmazának azonos legyen az összesítési szintje. Ellenkező esetben az összesítés hibás lesz. E követelmény teljesítésének egyik módja, hogy korlátozást kell bevezetni a dimenziótáblában a generációszám vagy a szintszám mezőre.
A DB2 OLAP Server által létrehozott ténytábla tartalmaz egy oszlopot minden nem kapcsoló dimenzióhoz és a kapcsolódimenzió minden, adatot tároló tagjához. A képen (ábra 9) látható vázhoz tartozó ténytábla oszlopai a következők:
A dimenzióoszlopok tárolják azokat a tagazonosítókat, amelyek az egyes nem kapcsoló dimenziók tagjaira hivatkoznak. A tagazonosítók a dimenziónézetek segítségével leképezhetők tagnevekre. A kapcsolótag-oszlopok tárolják a tényleges adatértékeket. A kapcsolódimenziók tagjai a kapcsolódimenzió dimenziónézete segítségével leképezhetők a ténynézet oszlopaira.
A DB2 OLAP Server belső neveket használ a ténytábla oszlopaira és belső azonosítókat a tagokra. A ténynézet a belső oszlopneveket a dimenzió- és tagnevekkel helyettesíti, de nem képezi le a dimenzióoszlopok tagazonosítóit a tagnevekre. A csillagnézet a belső oszlopneveket a dimenzió- és tagnevekkel helyettesíti, és leképezi a dimenzióoszlopok tagazonosítóit a tagnevekre úgy, hogy a ténytáblát összekapcsolja a dimenziótáblákkal.
Annak ellenére, hogy bármelyik sűrű dimenzió megadható kapcsolódimenziónak, ha egy SQL alkalmazás a tény- vagy a csillagnézetet használja, a legtermészetesebb leképezés akkor kapható, ha az Accounts dimenzió a kapcsolódimenzió.
A ténynézet neve a kockanézet FactViewName oszlopából kapható meg.
A ténynézet változó számú oszlopot tartalmaz az alábbi két típusban:
A táblázat 17 táblázat ismerteti részletesen a ténynézet kétféle
oszlopát.
táblázat 17. A ténynézet tartalma
Ahhoz, hogy egy alkalmazás hozzáférjen a ténynézet adataihoz, először ki kell keresnie a ténynézet nevét a kockakatalógus-nézetből.
Például a Sample alkalmazásbeli Basic adatbázis ténynézetének nevét a következő SQL utasítás közli:
SELECT FACTVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
A lekérdezés lehetséges eredménye:
OLAPSERV.SAMPBASI_FACTVIEW
Ha az alkalmazása számontartja a tagok RelMemberID értékeit, a ténynézet közvetlenül lekérdezhető. Például, adatértékek lekérdezése, ha a RelMemberId 3 (100-20), a piac RelMemberId értéke 2 (kelet), a idő RelMemberId értéke 4 (3. n.év):
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW WHERE PRODUCT=3 AND MARKET=2 AND TIME=4
Gyakoribb, hogy a ténynézet lekérdezéseiben összekapcsolások szerepelnek a dimenziónézetekkel. Az előzővel egyenértékű, összekapcsolásokat tartalmazó lekérdezés:
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
A csillagnézet neve a kockanézet StarViewName oszlopából kapható meg.
A csillagnézet változó számú oszlopot tartalmaz az alábbi két típusban:
táblázat 18 táblázat ismerteti részletesen a csillagnézet kétféle oszlopát.
táblázat 18. A csillagnézet tartalma
Ahhoz, hogy egy alkalmazás hozzáférjen a csillagnézet adataihoz, először ki kell keresnie a csillagnézet nevét a kockakatalógus-nézetből.
Például a Sample alkalmazásbeli Basic adatbázis csillagnézetének nevét a következő SQL utasítás közli:
SELECT STARVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' and CUBENAME='Basic'
A lekérdezés lehetséges eredménye: OLAPSERV.SAMPBASI_STARVIEW
A termékek lekérdezése a 100-astól a 10-esig a központi piacon az első negyedévben:
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE PRODUCT='100-10' AND MARKET='Central' AND TIME='Q1'
Az összes veszteséges termék lekérdezése a központi piacon a második negyedévben:
SELECT PRODUCT,PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET='Central' AND TIME='Q2' AND PROFIT < 0
A csillagnézetnek nincs minden tagja azonos hierarchiaszinten, ezért összesítést végző SQL utasítások használatakor figyelmesen kell összeállítani a lekérdezéseket. A dimenzióból kiválasztott tagoknak azonos szinten kell lenniük, a kettős összesítés elkerülése érdekében.
Például, a következő SQL utasítás a csillagnézet különböző szintjein kiválasztott tagokat tartalmaz: (Egyes eladások kétszer lesznek megszámolva két összegzési szint összesítése miatt.)
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Central','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','1996')
Feltéve, hogy Illinois része a központi régiónak és Q1 1996 első negyedéve (azaz 1996 része), a lekérdezés eredményében a PROFIT számok mint állami és régiószinten, valamint mind negyedévi, mind éves szinten összegződnek. Mivel a központi régió már tartalmazza az illinois-i adatokat, az illinois-i és a Q1 adatok kétszer szerepelnek az összegben. A hibát kijavítja a következő példa, amely két állam eladásait összegzi két államban a központi régióban:
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Indiana','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','Q2')