När du skapar OLAP-tillämpningar och flerdimensionella databaser registreras den nya tillämpningen och databasen i DB2 OLAP Server, och en uppsättning relationstabeller, även kallade stjärnschema, skapas. Dessutom skapar och administrerar DB2 OLAP Server ett antal vyer som gör det enklare för SQL-tillämpningarna att få åtkomst till flerdimensionella data. Du kan använda anpassade tillämpningar och vanliga frågeverktyg när du vill få åtkomst till flerdimensionella data med hjälp av de här vyerna. En del tillämpningar är utformade så att de utnyttjar de data som lagras i stjärnschemat som skapades i DB2 OLAP Server till fullo.
I följande lista visas alla de vyer som administreras av DB2 OLAP Server:
DB2 OLAP Server lagrar alla bastabeller och -vyer i schemat användarnamn, där användarnamn står för det användar-ID som har tilldelats DB2 OLAP Server. I de SQL-exempel som tas upp i det här kapitlet används schemat OLAPSERV.
Alla vynamn skrivs med stora bokstäver. Sätt inte citattecken runt vynamn. DB2 OLAP Server skapar vynamn och lagrar dem i katalogvyer. Dina SQL-tillämpningar kan ställa frågor mot vynamnen från katalogvyer. I Bild 9 visas de primära vyerna i DB2 OLAP Server.
Bild 9. schema i DB2 OLAP Server
![]() |
Det finns en kubkatalogvy som DB2 OLAP Server använder för schemat användarnamn. Den här vyn innehåller en rad för varje kub. Använd den här vyn till att ta reda på detaljer om alla OLAP-tillämpningar och -kuber som lagras i scheman. Kubkatalogvyn innehåller register över alla OLAP-tillämpningar och databaser som administreras i DB2 OLAP Server.
Namnet på kubkatalogvyn är CUBECATALOGVIEW. Precis som alla andra vyer ägs den av det schema som är tilldelat till DB2 OLAP Server.
I Tabell 14 visas de kolumner som ingår i kubkatalogvyn.
Tabell 14. Innehåll i kubkatalogvyn
Använd följande SQL-sats om du vill visa en lista över alla OLAP-tillämpningar:
SELECT DISTINCT APPNAME FROM OLAPSERV.CUBECATALOGVIEW
Om du vill visa en lista över alla flerdimensionella databaser i tillämpningen Sample kan du använda följande SQL-sats:
SELECT CUBENAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample'
Om du vill visa en lista med alla vynamn för den flerdimensionella databasen Basic i tillämpningen Sample kan du använda följande SQL-sats:
SELECT CUBEVIEWNAME,FACTVIEWNAME,STARVIEWNAME,ALIASIDVIEWNAME,LROVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Kubvyn och dimensionsvyerna innehåller information om dimensioner och element i en relationskub. Det finns en kubvy för varje relationskub, och en dimensionsvy för varje dimension en relationskub. De här vyerna kan användas till att ställa frågor mot många av de attribut som anges för dimensioner och element i OLAP-dispositionen.
Det finns en kubvy för varje relationskub som DB2 OLAP Server administrerar. Kubvyn innehåller en rad för varje dimension i relationskuben. Använd den här vyn till att få fram information om dimensionerna i en kub.
Namnet på kubvyn fås från kolumnen CubeViewName i kubkatalogvyn.
I Tabell 15 visas de kolumner som ingår i kubvyn.
Om du vill få åtkomst till data i kubvyn måste din tillämpning först avgöra namnet på kubvyn från kubkatalogvyn.
Exempel: Om du vill få reda på namnet på kubvyn för databasen Basic i tillämpningen Sample, formulerar du frågan på följande sätt:
SELECT CUBEVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Resultatet på frågan kan se ut ungefär på följande sätt:
OLAPSERV.SAMPBASI_CUBEVIEW
Om du vill visa en lista med dimensionsnamnen med tillhörande namn på dimensionsvyer för databasen Basic skriver du på följande sätt:
SELECT DIMENSIONNAME.DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW
Om du vill visa en lista med namnen på de täta dimensionerna i databasen Basic:
SELECT DIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE = 0
Om du vill få fram namnen på de dimensioner som inte är ankardimensioner och som används till att namnge kolumnerna i stjärnvyn skriver du på följande sätt:
SELECT RELDIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE <> 2
Om du vill returnera namnet på vyn för relationsattribut i dimensionen Product skriver du på följande sätt:
SELECT RATVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Product'
Namnet på dimensionsvyn hämtas från kolumnen DimensionViewName i kubvyn.
I Tabell 16 visas de kolumner som ingår i en dimensionsvy.
Tabell 16. Innehåll i en dimensionsvy
Namn | Typ | Storlek | Innehåll |
---|---|---|---|
MemberName | VarChar | 80 | Namnet på elementet. |
RelMemberName | VarChar | 18 | Bara för ankardimensioner. Elementnamnet i DB2 OLAP Server.
Det här namnet används till att namnge kolumner i fakta- och stjärnvyerna som
hör till elementen i ankardimensionen. Det är ett unikt namn som
skiljer sig från alla andra elementnamn i ankardimensionen och från namnen på
de dimensioner i relationskuben som inte är ankardimensioner. Det är en
lite annorlunda variant på MemberName. Du kan behöva göra följande
ändringar med MemberName:
|
RelMemberID | Heltal | Ingen | ID i DB2 OLAP Server för elementet. Det här IDt används till att koppla ihop dimensionstabellen och faktatabellen. |
ParentRelId | Heltal | Ingen | Relations-ID för närmast överordnade element till elementet i OLAP-dispositionen. För elementet med den högsta nivån är värdet NULL. |
LeftSiblingRelId | Heltal | Ingen | Relations-ID för det vänstra syskonelementet till elementet i OLAP-dispositionen. För element som inte har något vänstra syskon är värdet NULL. |
Status | Heltal | Ingen | Statusen för det här elementet kan vara en kombination av följande
värden:
|
CalcEquation | Long VarChar (arbetsstation); VarChar (OS/390) | 32700 (arbetsstation); 250 (OS/390) | Den beräkningsekvation som är standard för beräknade element. Lägg märke till att standardberäkningsekvationen inte behöver vara den ekvation som används till att beräkna elementets värde om en annan beräkning är angiven i det beräkningsskript som används till att beräkna relationskuben. |
UnarySymbol | Small Integer | Ingen | Den enställiga beräkningssymbolen:
|
AccountsType | Heltal | Ingen | Det här attributet används bara för kontodimensionen. Det kan
innehålla en kombination av följande värden:
|
NoCurrencyConv | Small Integer | Ingen | Inställning för valutakonvertering:
|
CurrencyMemberName | VarChar | 80 | Ett elementnamn från valutakuben som hör till det här elementet. |
GenerationNumber | Heltal | Ingen | Generationsnummer för det här elementet. |
GenerationName | VarChar | 80 | Generationsnamn för det här elementet. |
LevelNumber | Heltal |
| Nivånummer för det här elementet. |
LevelName | VarChar | 80 | Nivånamn för det här elementet. |
aliastabellnamn Det finns en aliaskolumn för varje OLAP-aliastabell som används i dispositionen. | VarChar | 80 | Aliaset för det här elementet i en tillhörande OLAP-aliastabell. Om det inte finns något alias för elementet är det här värdet null. Mer information finns i Använda vyer för alias-IDn. |
namn på kolumnen för relationsattribut Det finns en kolumn för relationsattribut för varje användardefinierat attribut av typen RatCol. | Den datatyp som angavs när kolumnen för relationsattribut skapades. | Storleken angavs när kolumnen för relationsattribut skapades. | Värdet på relationsattributet för det här elementet. |
Om du vill få åtkomst till data i dimensionsvyn måste din tillämpning först avgöra namnet på dimensionsvyn från kubvyn.
Exempel: Om du vill få reda på namnet på dimensionsvyn för dimensionen Time i databasen Basic formulerar du frågan på följande sätt:
SELECT DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Time'
Resultatet på frågan kan se ut ungefär på följande sätt: OLAPSERV.SAMPBASID_TIME
Skriv på följande sätt om du vill visa en lista med elementnamnen för dimensionen Time:
SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME
DB2 OLAP Server skapar och underhåller följande två vyer för faktatabellen i stjärnschemat:
Eftersom faktatabeller innehåller värden på olika hopslagningsnivåer måste du se till att den uppsättning element som väljs i varje dimension är på samma hopslagningsnivå om du skriver en SQL-tillämpning för hopslagning. I annat fall blir hopslagningen felaktig. Ett sätt att åstadkomma det på är att ta med ett villkor för något av fälten generationsnummer eller nivånummer i dimensionstabellen.
Faktatabellen som skapas i DB2 OLAP Server har en kolumn för varje dimension förutom ankardimensionen, och en kolumn för varje element i ankardimensionen som innehåller några data. Faktatabellen som hör till dispositionen som används i Bild 9 innehåller följande kolumner:
I dimensionskolumnerna lagras element-IDn som avser element i alla dimensioner förutom ankardimensionen. Element-IDna kan avbildas på elementnamn med hjälp av dimensionsvyerna. I ankarelementkolumnerna lagras de faktiska datavärdena. Ankardimensionselementen kan avbildas på kolumner i faktavyn med hjälp av dimensionsvyn för ankardimensionen.
DB2 OLAP Server använder interna namn på kolumnerna i faktatabellen, och interna IDn för elementen. Faktavyn ersätter de interna kolumnnamnen med dimensions- och elementnamn, men den avbildar inte element-IDna i dimensionskolumnen på elementnamn. Stjärnvyn ersätter de interna kolumnnamnen med dimensions- och elementnamn, och avbildar element-IDna i dimensionskolumnen på elementnamn genom att koppla ihop faktatabellen och dimensionstabellerna.
Även om eventuella täta dimensioner kan anges som ankardimension, om du har åtkomst till fakta- eller stjärnvyn från SQL-tillämpningar och kör ad hoc-frågor, får du den mest naturliga avbildningen om du anger dimensionen Accounts som ankardimension.
Namnet på faktavyn fås från kolumnen FactViewName i kubkatalogvyn.
Faktavyn innehåller ett varierande antal kolumner av följande två typer:
I Tabell 17 visas detaljer om de två typerna av kolumner i
faktavyn.
Tabell 17. Innehåll i faktavyn
Om du vill få åtkomst till data i faktavyn måste din tillämpning först avgöra namnet på faktavyn från kubkatalogvyn.
Exempel: Om du vill få reda på namnet på faktavyn för databasen Basic i tillämpningen Sample, formulerar du frågan på följande sätt:
SELECT FACTVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Resultatet på frågan kan se ut ungefär på följande sätt:
OLAPSERV.SAMPBASI_FACTVIEW
Om din tillämpning håller reda på RelMemberID-värden för element kan du ställa frågan direkt mot faktavyn. Exempel: Om du vill välja datavärdena för produkten med RelMemberId 3 (100-20) i marknaden med RelMemberId 2 (East), vid tidpunkten med RelMemberID 4 (Q3) kan du skriva på följande sätt:
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW WHERE PRODUCT=3 AND MARKET=2 AND TIME=4
Det vanligaste är att frågor som ställs mot faktavyn innehåller kopplingar till dimensionsvyerna. Med kopplingar skulle motsvarigheten till föregående fråga se ut på följande sätt:
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
Namnet på stjärnvyn fås från kolumnen StarViewName i kubkatalogvyn.
Stjärnvyn innehåller ett varierande antal kolumner av följande två typer:
I Tabell 18 visas detaljer om de två typerna av kolumner i stjärnvyn.
Tabell 18. Innehåll i stjärnvyn
Om du vill få åtkomst till data i stjärnvyn måste din tillämpning först avgöra namnet på stjärnvyn från kubkatalogvyn.
Exempel: Om du vill få reda på namnet på stjärnvyn för databasen Basic i tillämpningen Sample, formulerar du frågan på följande sätt:
SELECT STARVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='SAMPLE' and CUBENAME='BASIC'
Resultatet på frågan kan se ut ungefär på följande sätt: OLAPSERV.SAMPBASI_STARVIEW
Om du vill välja datavärdena för produkten 100-10 i marknaden Central, under det första kvartalet skriver du på följande sätt:
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE PRODUCT='100-10' AND MARKET='Central' AND TIME='Q1'
Om du vill välja alla produkter i regionen Central, där vinsten sjönk under det andra kvartalet skriver du på följande sätt:
SELECT PRODUCT,PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET='Central' AND TIME='Q2' AND PROFIT < 0
Alla element i stjärnvyn befinner sig inte på samma hierarkiska nivå, så konstruera frågorna noggrant när du använder SQL till att utföra hopslagningsåtgärder. De element som väljs från en dimension bör vara på samma nivå så att du undviker dubbel hopslagning.
Exempel: Följande SQL-sats visar element som väljs från olika nivåer i stjärnvyn (vissa Sales-värden kommer att räknas två gånger eftersom två olika nivåer i Sums slås ihop).
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Central','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','1996')
Om vi förutsätter att Illinois ingår i regionen Central och att Q1 ingår i 1996 så kommer frågan resultera i att siffror för PROFIT från både nivåerna State och Region samt nivåerna Quarter och Year summeras. Eftersom regionen Central redan innehåller data för Illinois räknas data för Illinois och Q1 två gånger i summan. Om du vill rätta till SQL-satsen så att den rätt räknar samman försäljningssiffrorna för två stater i regionen Central under två olika kvartal kan du göra på följande sätt:
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Indiana','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','Q2')