Quando si crea un'applicazione OLAP e un database multidimensionale, DB2 OLAP Server cataloga la nuova applicazione e il nuovo database e crea un insieme di tabelle relazionali indicate come schema a stella. Inoltre, DB2 OLAP Server crea e gestisce un numero di viste che semplificano l'accesso dell'applicazione SQL ai dati multidimensionali. Utilizzando queste viste, è possibile utilizzare le applicazioni comuni e gli strumenti di interrogazioni standard per accedere ai dati multidimensionali. Alcune applicazioni vengono programmate per usufruire dei dati memorizzati nello schema a stella creato da DB2 OLAP Server.
Il seguente elenco illustra l'insieme completo di viste gestite da DB2 OLAP Server:
DB2 OLAP Server memorizza tutte le tabelle e le viste nello schema nome utente dove nome utente è l'ID utente assegnato a DB2 OLAP Server. Per gli esempi di SQL in questo capitolo viene utilizzato il nome schema OLAPSERV.
Tutti i nomi vista sono in lettere maiuscole. Non racchiudere i nomi vista tra virgolette. DB2 OLAP Server crea i nomi vista e li memorizza nelle viste di catalogazione. Le applicazioni SQL possono eseguire interrogazioni sui nomi vista dalle viste di catalogazione. La Figura 9 illustra le viste principali di DB2 OLAP Server.
Figura 9. Schema del DB2 OLAP Server
![]() |
Esiste una vista di catalogazione cubo che il DB2 OLAP Server utilizza nello schema nome utente. Tale vista contiene una riga per ciascun cubo. Utilizzare questa vista per ottenere dettagli relativi a tutte le applicazioni OLAP e ai cubi memorizzati in uno schema. La vista di catalogazione cubo cataloga tutte le applicazioni OLAP e i database gestiti da DB2 OLAP Server.
Il nome della vista catalogazione cubo è CUBECATALOGVIEW. Come tutte le altre viste, anche questa è inserita all'interno dello schema assegnato a DB2 OLAP Server.
La Tabella 14 indica le colonne nella vista di catalogazione cubo.
Tabella 14. Contenuto della vista di catalogazione cubo
Utilizzare questa istruzione SQL per ottenere un elenco di applicazioni OLAP:
SELECT DISTINCT APPNAME FROM OLAPSERV.CUBECATALOGVIEW
Utilizzare questa istruzione SQL per ottenere un elenco di database multidimensionali nell'applicazione Sample:
SELECT CUBENAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample'
Utilizzare questa istruzione SQL per ottenere i nomi vista per il database multidimensionale Basic nell'applicazione Sample:
SELECT CUBEVIEWNAME,FACTVIEWNAME,STARVIEWNAME,ALIASIDVIEWNAME,LROVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
La vista cubo e le viste dimensioni contengono informazioni relative alle dimensioni e ai membri in un cubo relazionale. Esiste una vista cubo per ciascun cubo relazionale e una vista dimensioni per ciascuna dimensione all'interno di un cubo relazionale. Queste viste possono essere utilizzate per richiedere molti degli attributi assegnati alle dimensioni e ai membri nel profilo OLAP.
Esiste una vista cubo per ciascun cubo relazionale gestito dal DB2 OLAP Server. La vista cubo contiene una riga per ciascuna dimensione nel cubo relazionale. Utilizzare questa vista per ottenere informazioni relative alle dimensioni di un cubo.
Il nome vista cubo deriva dalla colonna CubeViewName della vista di catalogazione cubo.
La Tabella 15 indica le colonne contenute nella vista cubo.
Tabella 15. Contenuto della vista cubo
Per accedere ai dati nella vista cubo, l'applicazione deve innanzitutto determinare il nome della vista cubo dalla vista di catalogazione cubo.
Ad esempio, per trovare il nome della vista cubo del database nell'applicazione Sample, interrogare il database utilizzando la seguente istruzione SQL:
SELECT CUBEVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Il risultato di questa interrogazione é:
OLAPSERV.SAMPBASI_CUBEVIEW
Per elencare i nomi delle dimensioni e i nomi della vista dimensioni corrispondenti per il database Basic:
SELECT DIMENSIONNAME.DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW
Per elencare i nomi delle dimensioni delle dimensioni dense del database:
SELECT DIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE = 0
Per determinare i nomi delle dimensioni non ancora utilizzati per denominare le colonne nella vista a stella:
SELECT RELDIMENSIONNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONTYPE <> 2
Per visualizzare il nome della vista attributi relazionali della dimensione Product:
SELECT RATVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Product'
Il nome vista dimensioni deriva dalla colonna DimensionViewName della vista cubo.
La Tabella 16 indica le colonne contenute in una vista
dimensioni.
Tabella 16. Contenuto di una vista dimensioni
Nome | Tipo | Dimensioni | Contenuto |
---|---|---|---|
MemberName | VarChar | 80 | Il nome del membro. |
RelMemberName | VarChar | 18 | Solo le dimensioni dell'ancora. Il nome del membro del DB2
OLAP Server. Tale nome è utilizzato per denominare le colonne nelle
viste fact e a stella corrispondenti ai membri delle dimensioni
dell'ancora. E' un nome unico paragonato a tutti i nomi
membro della dimensione dell'ancora e ai nomi delle dimensioni della non
ancora di questo cubo relazionale. Si tratta di una versione modificata
del Nome membro. Le modifiche che potrebbe essere necessario apportare
al nome membro sono:
|
RelMemberID | Numero intero | Nessuno | L'ID di DB2 OLAP Server per questo membro. Questo ID viene utilizzato per collegare la tabella dimensioni alla tabella fact. |
ParentRelId | Numero intero | Nessuno | L'ID relazionale di primo grado del membro nel profilo OLAP. Il valore è NULL per il membro di livello superiore. |
LeftSiblingRelId | Numero intero | Nessuno | L'ID relazionale di pari livello posto a sinistra del membro nel profilo OLAP. Questo valore è NULL per i membri che non hanno un pari livello posto a sinistra. |
Status | Numero intero | Nessuno | Lo status di questo membro può contenere una combinazione di:
|
CalcEquation | Long VarChar (workstation); VarChar (OS/390) | 32700 (workstation); 250 (OS/390) | L'equazione di calcolo predefinita per i membri di calcolo. Da notare che l'equazione di calcolo predefinita non è l'equazione utilizzata per calcolare il valore del membro qualora venisse specificato un calcolo diverso nello script di calcolo utilizzato per calcolare il cubo relazionale. |
UnarySymbol | Breve numero intero | Nessuno | Il simbolo di calcolo unario:
|
AccountsType | Numero intero | Nessuno | Questo attributo viene utilizzato solo per la dimensione account.
Può contenere una combinazione dei seguenti valori:
|
NoCurrencyConv | Breve numero intero | Nessuno | Impostazione conversione valuta:
|
Nome membro valuta | VarChar | 80 | Il nome di un membro dal cubo valuta associato a questo membro. |
GenerationNumber | Numero intero | Nessuno | Il numero di generazione per questo membro. |
GenerationName | VarChar | 80 | Il nome di generazione per questo membro. |
LevelNumber | Numero intero |
| Il numero di livello per questo membro. |
LevelName | VarChar | 80 | Il nome del livello per questo membro. |
nome tabella alternativo Esiste una colonna di nomi alternativi per ciascuna tabella di nomi alternativi OLAP utilizzata nel profilo. | VarChar | 80 | Il nome alternativo per questo membro in una tabella nomi alternativi associata OLAP. Se non viene fornito alcun nome alternativo per un membro, questo valore è nullo. Consultare Utilizzo delle viste ID nomi alternativi. |
nome colonna attributi relazionali Esiste una colonna di attributi relazionali per ogni UDA RatCol. | Il tipo di dati specificato quando è stata creata la colonna attributi relazionali. | La dimensione specificata quando è stata creata la colonna attributi relazionali. | Il valore dell'attributi relazionali per questo membro. |
Per accedere ai dati in una vista dimensioni, l'applicazione deve innanzitutto determinare il nome della vista dimensioni dalla vista cubo.
Ad esempio, per trovare il nome della vista dimensioni per la dimensione "Time" nel database, si interroga il database utilizzando la seguente istruzione SQL:
SELECT DIMENSIONVIEWNAME FROM OLAPSERV.SAMPBASI_CUBEVIEW WHERE DIMENSIONNAME='Time'
Il risultato dell'interrogazione può essere il seguente: OLAPSERV.SAMPBASID_TIME
Per elencare i nomi membro per la dimensione Time:
SELECT MEMBERNAME FROM OLAPSERV.SAMPBASID_TIME
Il DB2 OLAP Server crea e conserva due viste della tabella fact dello schema a stella:
Dal momento che una tabella fact contiene valori con diversi livelli di aggregazione, assicurarsi che l'insieme di membri selezionati in ciascuna dimensione abbia lo stesso livello di aggregazione quando si scrive una applicazione SQL per l'aggregazione. In caso contrario, le aggregazioni saranno errate. Un modo di rispettare questa richiesta è di includere una restrizione sul campo numero generazione o sul campo numero livello nella tabella dimensioni.
La tabella fact creata dal DB2 OLAP Server ha una colonna per ciascuna dimensione non ancora e una colonna per ciascun membro della dimensione dell'ancora che memorizza i dati. La tabella fact corrispondente al profilo utilizzato nella Figura 9 ha le seguenti colonne:
Le colonne dimensioni memorizzano gli ID membro che fanno riferimento ai membri di ciascuna dimensione non ancora. E' possibile mettere in corrispondenza gli ID membro con nomi membro utilizzando le viste dimensioni. Le colonne membro dell'ancora hanno memorizzato i valori dei dati attuali. E' possibile mettere in corrispondenza i membri dimensione dell'ancora con le colonne della vista fact utilizzando la vista dimensione per la dimensione dell'ancora.
Il DB2 OLAP Server utilizza nomi interni per le colonne della tabella fact e ID interni per i membri. La vista fact sostituisce i nomi della colonna interna con i nomi dimensioni e membro, ma non mette in corrispondenza gli ID membro della colonna dimensioni con i nomi membro. La vista a stella sostituisce i nomi della colonna interna con i nomi membro e dimensioni e mette in corrispondenza gli ID membro della colonna dimensioni con i nomi membro collegando la tabella fact alle tabelle dimensioni.
Se si accede alla vista fact o a stella dalle applicazioni SQL e si eseguono interrogazioni mirate, la corrispondenza più naturale si ottiene specificando la dimensione account come dimensione dell'ancora, sebbene sia possibile specificare come dimensione dell'ancora qualsiasi dimensione densa.
Il nome vista fact deriva dalla colonna FactViewName della vista di catalogazione cubo.
La vista fact contiene un numero variabile di colonne di due tipi:
La Tabella 17 indica i dettagli relativi ai due tipi di colonne nella
vista fact.
Tabella 17. Contenuto della vista fact
Per accedere ai dati in una vista fact, l'applicazione deve innanzitutto determinare il nome della vista fact dalla vista di catalogazione cubo.
Ad esempio, per trovare il nome della vista fact per il database Basic nell'applicazione Sample, si deve utilizzare la seguente istruzione:
SELECT FACTVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='Sample' AND CUBENAME='Basic'
Il risultato dell'interrogazione é:
OLAPSERV.SAMPBASI_FACTVIEW
Se l'applicazione conserva traccia dei valori RelMemberID per i membri, è possibile eseguire l'interrogazione della vista fact direttamente. Ad esempio, per selezionare i valori dei dati per il prodotto (Product) con RelMemberId 3 (100-20), in market con RelMemberId 2 (East), tempo (Time) con RelMemberID 4 (Q3):
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_FACTVIEW WHERE PRODUCT=3 AND MARKET=2 AND TIME=4
Più comunemente, le interrogazioni eseguite per la vista fact includono collegamenti con le viste dimensione. Una interrogazione che utilizza i collegamenti equivalente all'interrogazione precedente é:
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
Il nome vista a stella deriva dalla colonna StarViewName della vista di catalogazione cubo.
La vista a stella contiene un numero variabile di colonne di due tipi:
La Tabella 18 indica i dettagli relativi ai due tipi di colonne nella vista a stella.
Tabella 18. Contenuto della vista a stella
Per accedere ai dati nella vista a stella, l'applicazione deve innanzitutto determinare il nome della vista a stella dalla vista di catalogazione cubo.
Ad esempio, per trovare il nome della vista a stella per il database Basic nell'applicazione Sample, si deve utilizzare la seguente istruzione:
SELECT STARVIEWNAME FROM OLAPSERV.CUBECATALOGVIEW WHERE APPNAME='SAMPLE' and CUBENAME='BASIC'
Il risultato di questa interrogazione può essere il seguente: OLAPSERV.SAMPBASI_STARVIEW
Per selezionare i valori dei dati per il prodotto (Product) 100-10, nel market centrale,(Central) durante il primo trimestre:
SELECT PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE PRODUCT='100-10' AND MARKET='Central' AND TIME='Q1'
Per selezionare tutti i prodotti che hanno perso profitti nella regione centrale, durante il secondo quarto:
SELECT PRODUCT,PROFIT,SALES,COGS FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET='Central' AND TIME='Q2' AND PROFIT < 0
Non tutti i membri della vista a stella sono allo stesso livello gerarchico; creare quindi le interrogazioni attentamente quando si utilizza SQL per eseguire le operazioni di aggregazione. I membri selezionati in una dimensione devono essere allo stesso livello per evitare aggregazioni doppie.
Ad esempio, la seguente istruzione SQL indica i membri selezionati a diversi livelli nella vista a stella. Alcune vendite vengono conteggiate due volte poiché sono stati aggregati due livelli di somma.
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Central','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','1996')
Presupponendo che Illinois sia parte della regione Central e che Q1 sia parte del 1996, questa interrogazione è visualizzata nelle figure PROFIT sia nel livello state e region che in quello quarter e year sommati. Dal momento che la region Central include già i dati Illinois, i dati Illinois e Q1 sono calcolati due volte nella somma. Se si desidera correggere l'SQL affinché sommi le vendite per i due stati nella regione centrale durante due diversi trimestri, è possibile utilizzare il seguente esempio:
SELECT SUM(PROFIT) FROM OLAPSERV.SAMPBASI_STARVIEW WHERE MARKET IN ('Indiana','Illinois') AND PRODUCT='100' AND TIME IN ('Q1','Q2')