• Non ci sono risultati.

Implementazione del CUBO_RICOVERI

6 Cubo per i dati relativi ai Ricoveri

6.4 Implementazione del CUBO_RICOVERI

L‟idea è di poter ottenere, dal CUBO_RICOVERI,dei dati riassuntivi, che possano essere letti anche mediante grafici, come per esempio il numero di pazienti ricoverati in un certo intervallo temporale o i ricoverati di un reparto divisi per sesso. Per tale ragione si è pensata di creare la sola misura PAZIENTI di tipo numerico.

La misura PAZIENTE ha come dominio TRUE(1) o FALSE(0), e assume valore “1” se è presente l‟evento per quella determinata ennupla di valori delle dimensioni.

44

Per poter ottenere, mediante il tool Data Viewer di Oracle OLAP, la visualizzazione dei dati e la loro analisi e aggregazione in tempo reale sulle dimensioni, il cubo è stato costruito con implementazione ROLAP with MVs. Il cubo è stato però creato anche con implementazione ROLAP, la quale non permette di ottenere query dinamiche mediante Data Viewer ma permette di ottenere una tabella con modello multidimensionale e in questo cubo si è per questo considerata anche la dimensione DIM_ANAGRAFE in modo da avere la rintracciabilità del singolo paziente, mentre nell‟altro cubo per analisi analitiche con implementazione ROLAP with MVs la dimensione dell‟Anagrafe non è stata considerata dato che essa contiene un solo livello e non è concettualmente adatta per l‟aggregazione,

Gli oggetti implementati in questo modo sono visibili sia da OWB che da OLAP, e questa caratteristica è stata sfruttata a nostro vantaggio, infatti, per essere sicuri che l‟architettura dell‟oggetto fosse corretta per prima cosa il cubo è stato realizzato mediante il wizard di creazione in Oracle Warehouse Builder e i parametri per l‟analisi analitica sono stati poi aggiunti con Oracle OLAP.

Dopo la procedura di implementazione ROLAP gli oggetti creati sono: il cubo C_RICOVERI, un oggetto del workspace analitico all‟interno del Reposity, e la tabella T_C_Ricoveri la quale ha la tipica struttura della Fact Table e , nella logica dello schema a stella, contiene un campo per la misura ed n foreing key quante sono le n dimensioni e corrispondenti alle primary key delle stesse. Per alimentare la tabella del cubo è stata utilizzato l‟ennesimo mapping al cui interno sono state poste in join la T_RICOVERI, creata precedentemente, con la DIM_ANAGRAFE per poter ottenere tutti i dati necessari per la popolazione del cubo, ponendo come condizione l‟uguaglianza tra i codici interni dei pazienti.

Per porre ad “1” la misura paziente in ogni record è stato utilizzato l‟operatore C che crea una costante risultato di una qualsiasi espressione che desidera implementare l‟utente. Nel nostro caso è bastato semplicemente porre “1” come espressione.

45

Figura 6-10 Mapping per la popolazione del cubo C_RICOVERI

Il risultato dopo il popolamento è una tabella che permette, mediante query molto semplici , di ottenere diversi tipi di interrogazioni su l‟evento del ricovero.

46

Per esempio la query:

SELECT SUM(PAZI) FROM C_RICOVERI_TAB

WHERE DIMENSIONE_PROVINCIA LIKE „LI‟ AND DIMENSIONE_SESSO

LIKE „2‟ AND DIMENSIONE_REPARTI LIKE „C1034‟

Permette di ottenere il numero totale di pazienti ricoverati provenienti dalla provincia di Livorno di sesso femminile all‟interno del reparto di Cardiochirurgia Adulti della struttura di Pisa.

Successivamente il cubo è stato nuovamente implementato e questa volta con procedura ROLAP with MVs, prima in OWB e poi è stato configurato per l‟analisi analitica il Oracle OLAP

L‟oggetto una volta definito in OWB risulta infatti già visibile in OLAP ma non sono state create le viste necessarie per le operazioni successive di drill down o Roll Up e per la costruzione dei grafici.

Per avere degli oggetti validi il cubo deve essere completamento “mappato” anche all‟interno di Oracle OLAP. Il mapping in OLAP è graficamente diverso da quello il OWB e quello che si fa è riempire i campi delle informazioni richieste con gli indirizzi dei campi appartenenti alle tabelle dello schema ponendo in join le foreing key del cubo con le primary key delle dimensioni.

Una volta convalidato il mapping automaticamente vengono generate due viste: una vista, $CUBO_RICOVERI, e una vista materializzata, $CUBO_RICOVERI_MV.

Le viste sono inizialmente vuote e di default il loro refresh è deferred complete, cioè la select per il completo inserimento dei dati non viene fatta subito dopo la loro creazione bensì al refresh successivo. Una volta mappato il cubo questo va gestito, cioè il programma deve popolare le viste di modo i dati possano poi essere visualizzati dal Data Viewer.

All‟interno delle due viste si trovano: nella prima per ogni record i valori che assumono le misure per ogni singola occorrenza del fatto e i valori delle chiavi esterne che collegano il cubo alle dimensioni , e nella seconda invece si trovano tantissimi campi contenenti i valori delle misure, i valori dei diversi

47

campi delle dimensioni(nomi e id dei domini di appartenenza dei diversi livelli) e altri parametri necessari ad Oracle per svolgere le operazioni analitiche su i dati.

Ha questo punto riusciamo ad ottenere finalmente il risultato desiderato, una visualizzazione dei dati aggregati mediante il tool Data Viewer in cui l‟applicazione Query Builder permette di modificare le dimensioni visibili, la granularità dei dati e costruisce automaticamente dei grafici, a colonna o a torta o altri tipi in base alla scelta, che riportano i dati raggruppati in base alle dimensioni selezionate e ai rispettivi livelli.

Figura 6-12 Data Viewer del cubo RICOVERI

La schermata ottenuta è molto semplice e intuitiva da usare e questo rende possibile permettere anche ad un persona che non ha conoscenze di informatica e, men che mai di SQL, di ottenere delle informazioni di aggregazione scavando tra i vari livelli in base alle necessità con un semplice click.

48

Documenti correlati