OLAP Telepítési és felhasználói kézikönyv

DB2 OLAP Server nézetek

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 nézetek elnevezési sémája

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.

ábra 9. DB2 OLAP Server séma


Figure views not displayed.

A kockakatalógus-nézet használata

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

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.

A kockakatalógus-nézet tartalma

táblázat 14: a kockakatalógus-nézet oszlopait mutatja.

táblázat 14. A kockakatalógus-nézet tartalma
Név Típus Max. méret Tartalom
AppName VarChar 8 A CubeName által azonosított relációs kockát tartalmazó OLAP alkalmazás neve.
CubeName VarChar 8 Egy többdimenziós adatbázis neve.
CubeViewName VarChar 27 Az ehhez a többdimenziós adatbázishoz tartozó kockanézet teljesen megadott neve.
FactViewName VarChar 27 Az ehhez a többdimenziós adatbázishoz tartozó ténynézet teljesen megadott neve.
StarViewName VarChar 27 Az ehhez a többdimenziós adatbázishoz tartozó csillagnézet teljesen megadott neve.
AliasIdViewName VarChar 27 Az ehhez a többdimenziós adatbázishoz tartozó fedőnévazonosító-nézet teljesen megadott neve.
LROViewName VarChar 27 A többdimenziós adatbázishoz tartozó LRO nézet teljesen megadott neve.

A kockakatalógus-nézet lekérdezése SQL utasításokkal

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'

Dimenzió- és taginformáció lekérdezése:

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.

A kockanézet használata

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.

Kockanézet neve

A kockanézet neve a kockakatalógus-nézet CubeViewName oszlopából származik.

A kockanézet tartalma

táblázat 15: a kockanézet oszlopait mutatja.

táblázat 15. A kockanézet tartalma
Név Típus Méret Tartalom
DimensionName VarChar 80 Az OLAP dimensionName.
RelDimensionName VarChar 18 A DB2 OLAP Server-beli dimenziónév. Ez az oszlop annak az oszlopnak a nevét tartalmazza a csillag- vagy ténynézetből, amely ennek a dimenziónak felel meg. A RelDimensionName egyedi név a relációs kockán belül az összes többi dimenziónévhez és a kapcsolódimenzió tagjainak nevéhez képest. A RelDimensionName a DimensionName módosított változata. A DimensionName-en esetleg végrehajtandó változtatások:
  • A név hosszának korlátozása.
  • Távolítsa el vagy cserélje le a többdimenziós nevekben megengedett, de a relációs nevekben nem megengedett különleges karaktereket!
  • Karakterek megváltoztatása az összes módosítás után, hogy a név egyedi legyen a kockabeli nevek között.
DimensionType Small Integer
Az oszlop értékei:
  • 0 = sűrű dimenzió
  • 1 = ritka dimenzió
  • 2 = kapcsolódimenzió
DimensionTag Small Integer
Az oszlop értékei:
  • 0x00: nincs címke
  • 0x01: Accounts
  • 0x02: Time
  • 0x04: Country
  • 0x08: pénznem partíció
DimensionId Integer
Az OLAP körvonalban lévő dimenzióazonosító.
DimensionViewName VarChar 27 Az ehhez a dimenzióhoz tartozó dimenziónézet teljesen megadott neve.
UDAViewName VarChar 27 A dimenzióhoz tartozó felhasználó által megadott attribútumok (UDA) nézetének teljesen megadott neve.
RATViewName VarChar 27 Ezen dimenzió relációs attribútumnézetének teljesen megadott neve.

A kockanézet lekérdezése SQL utasításokkal

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'

Dimenziónézet neve

A dimenziónézet neve a kockanézet DimensionViewName oszlopából kapható meg.

A dimenziónézet tartalma

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:
  • A név hosszának korlátozása.
  • Távolítsa el vagy cserélje le a többdimenziós nevekben megengedett, de a relációs nevekben nem megengedett különleges karaktereket!
  • Karakterek megváltoztatása az összes módosítás után, hogy a név egyedi legyen a relációs kockán belül a nevek között.
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:
  • 0x0000= foglalt
  • 0x0001= 'Never share' (nem megosztható) tag esetén
  • 0x0002= 'Label only' (csak címke) tag esetén
  • 0x0004= 'Shared member' (megosztott tag) esetén
  • 0x0008 = foglalt
  • 0x0010 = Egyetlen utóddal, vagy egyetlen, összesítőművelettel ellátott utóddal rendelkező szülőtag esetén. (Az összes többi utód a 'no-op' művelettel bír.)
  • 0x0020 = 'Dynamic Calc And Store' beállítással rendelkező tag
  • 0x0040= 'Dynamic Calc' beállítással rendelkező tag
  • 0x0080= foglalt
  • 0x0100= foglalt
  • 0x02000= szülőtag, ha egyik utódja megosztott.
  • 0x04000= normál tag
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:
  • 0 = összeadás
  • 1 = kivonás
  • 2 = szorzás
  • 3 = osztás
  • 4 = százalék
  • 5 = "No op" (üres művelet)
AccountsType Integer Nincs Ez az attribútum csak az Accounts dimenzióban használatos. A következő értékek kombinációja lehet:
  • 0x0000 = nulla vagy hiányzó érték nem maszkolandó
  • 0x4000 = hiányzó érték maszkolandó
  • 0x8000 = nulla érték maszkolandó
  • 0x0001 = egyenleg először
  • 0x0002 = egyenleg utoljára
  • 0x0004 = százalék
  • 0x0008 = átlag
  • 0x0010 = egység
  • 0x0020 = csak részletek
  • 0x0040 = költség
NoCurrencyConv Small Integer Nincs Pénznem-átváltási beállítás:
  • 0x0000 = pénznem-átváltás használata
  • 0x0001 = nincs pénznem-átváltá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.

Dimenziónév lekérdezése SQL utasítással

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

Tagnevek felsorolása SQL-ben:

A Time dimenzióban lévő tagnevek listázása:

SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME

Tény és csillagnézet

A DB2 OLAP Server létrehoz és fenntart két nézetet a csillagséma ténytáblájáról.

Ténynézet
Minden, a DB2 OLAP Server által kezelt kockáról egy ténynézet van. A ténynézet a ténytábla egyszerű nézete. A ténytábla tartalmazza a többdimenziós adatokat. A nézet használatával olyan SQL alkalmazások férhetnek közvetlenül hozzá többdimenziós adatokhoz, amelyek a dimenziónézetekkel való szükséges összekapcsolásokat kezelik.

Csillagnézet
Minden, a DB2 OLAP Server által kezelt kockáról egy csillagnézet van. A csillagnézet kapcsolja össze a ténytáblát a csillagséma minden egyes dimenziónézetével. E nézet egyszerű hozzáférést biztosít a többdimenziós adatokhoz, és ideális ad hoc lekérdezésekhez és olyan általános lekérdezőeszközökhöz, amelyek nem kezelik a dimenziónézetekhez szükséges összekapcsolásokat.

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 ténynézet neve a kockanézet FactViewName oszlopából kapható meg.

A ténynézet tartalma

A ténynézet változó számú oszlopot tartalmaz az alábbi két típusban:

Dimenzióoszlopok
Egy oszlop minden nem kapcsoló dimenzióhoz.

Kapcsolótag-oszlopok
Egy oszlop minden egyes olyan kapcsolódimenzió-taghoz, amely adatot tárol

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
Név Típus Tartalom
Dimenzióoszlop esetén:

A dimenzió rövid neve a kockanézet RelDimensionName oszlopából vétetik.

Integer E dimenzió tagjának RelMemberID értéke
Kapcsolótag-oszlopoknál:

A tag rövid tagneve a kapcsolódimenzió dimenziónézetének RelMemberName oszlopából vétetik.

Double A cella adatértéke.

A ténynézet lekérdezése UNIX és Windows NT alatt SQL utasításokkal

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 csillagnézet neve a kockanézet StarViewName oszlopából kapható meg.

A csillagnézet tartalma

A csillagnézet változó számú oszlopot tartalmaz az alábbi két típusban:

Dimenzióoszlopok
Egy oszlop minden nem kapcsoló dimenzióhoz.

Kapcsolótag-oszlopok
Egy oszlop minden kapcsolódimenzió-taghoz.

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
Név Típus Tartalom
Dimenzióoszlop esetén:

A dimenzió rövid neve a kockanézet RelDimensionName oszlopából vétetik.

VarChar(80) Tagnév
Kapcsolótag-oszlopoknál:

A tag rövid tagneve a kapcsolódimenzió dimenziónézetének RelMemberName oszlopából vétetik.

Double A cella adatértéke.

A csillagnézet lekérdezése UNIX és Windows NT alatt SQL utasításokkal

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')
 


[ Oldal eleje | Előző oldal | Következő oldal | Tartalom | Tárgymutató ]