CAPITOLO 4 INDIVIDUAZIONE DATA MART
4.3 Tabelle delle dimensioni
4.3.1 Dimensione Customer
Tesi di Laurea Magistrale 2015/2016
48
relativa ai clienti dell’azienda Dream che hanno stipulato un contratto. Come
derivazione del modello logico, la struttura verrà creata dello script riportato in Figura4.17(1-2). La tabella è partizionata secondo i clienti che risultano attivi al giorno corrente e quelli che non usufruiscono più del servizio; vi è, inoltre, un indice definito sul COD_CUSTOMER e uno creato sulla chiave primaria.
Tesi di Laurea Magistrale 2015/2016
49 Figura4.17-1: Script creazione DM_CUSTOMER
Tesi di Laurea Magistrale 2015/2016
50 Figura4.17-2: Script creazione DM_CUSTOMER
Tesi di Laurea Magistrale 2015/2016
51
4.3.1.1 Flusso di caricamento
Il flusso di caricamento descriverà i passaggi che hanno portato alla costituzione della DM_CUSTOMER contenente tutte le informazioni descritte nel modello logico. Anche in questo caso vi saranno dei campi tecnici che in una prima fase non sono stati presi in considerazione, ma nel corso dello sviluppo si sono resi necessari affinchè la logica di calcolo potesse essere applicata.
Si procede con una schematizzazione delle strutture coinvolte e la sequenza di sviluppo:
Figura4.18: Diagramma Strutture DM_CUSTOMER
a) Staging Area
Così come anticipato, all’interno della Staging Area si trovano tutti i dati che riguardano i clienti della Dream; essi vengono inseriti da una fonte alimentante esterna. Un primo filtro circa la correttezza dei dati, a livello di Type, ad esempio, viene effettuata in questo Schema dall’altro fornitore. Considerata l’importanza
Tesi di Laurea Magistrale 2015/2016
52
della dimensione Customer, l’azienda Dream assicura che i dati contenuti nella ST sono quelli su cui si deve procedere ad effettuare le analisi. Si riporta lo script di creazione della struttura presente su questo Schema:
Figura4.19: Script ST_CUSTOMER
b) ODS
Dall’ODS entrano in scena i vari costrutti che determinano il caricamento dei dati.
Come già accennato, si utilizzano i mapping per poter mappare dalle viste che svolgono elaborazioni più o meno complesse, i dati all’interno delle tabelle.
La prima vista presente sull’ODS è la VS_H_CUSTOMER, essa gestisce la storicizzazione dei dati presenti nella ST_CUSTOMER gestendo dei dati a delta, cioè riguardanti un lasso temporale ristretto, in questo caso giornaliero. Si riporta lo
Tesi di Laurea Magistrale 2015/2016
53
script della vista nominata in modo da descrivere i passi che vengono eseguiti.
Figura4.20: Script creazioneVS_H_CUSTOMER
La vista definisce nella WITH un delta che, esegue il confronto campo-campo degli elementi presenti nella tabella ST_CUSTOMER e seleziona quelli che al giorno
Tesi di Laurea Magistrale 2015/2016
54
dell’elaborazione sono ancora validi, hanno cioè la DAT_END valorizzata al
31/12/9999 (foto aperta) e non sono presenti nella tabella WT_DELTA_DW_HIST_CUSTOMER. Le funzioni FN_FILLER evidenziate, si occupano di inserire tappi nel caso in cui il valore sia null; la funzione è la medesima degli NVL ( …) in cui si prevede un valore di default nel caso in cui il
dato assuma un valore NULL.
La tabella seguente riassume i valori tappo previsti per i vari TYPE assunti dai dati in questo caso:
TYPE VALUE
DATE To_date(‘31/12/9999’, ‘dd/mm/yyyy’)
DESC ‘Undefined’
FLAG ‘X’
NUMBER 0
Tabella4.1: Valori tappo previsti nella funzione del sistema
Selezionato il delta, si gestisce la vera e propria storicizzazione mediante due passi di union:
Nel primo si marcano con ‘I’ nel FLG_UPDATE i record che non sono mai stati presenti sulla WT_DELTA_DW_HIST_CUSTOMER. Vengono inseriti mantenendo la foto aperta e associando ad essi come DAT_START la data dell’elaborazione. L’unicità dell’ID è garantita dalla sequence
SQ_DW_HIST_CUSTOMER definita in modo incrementale in base alle insert effettuate ;
Tesi di Laurea Magistrale 2015/2016
55
aggiornamento, a guidare l’update sarà la colonna ID_CUSTOMER univoca per ogni record. Si nota come in questo passo si esegue una modifica nel campo DAT_END, chiudendo il record e marcandolo con la data al giorno dell’elaborazione -1.
La tabella WT_DELTA_DW_HIST_CUSTOMER che offre il confronto con la ST_CUSTOMER viene caricata attraverso una procedura e rappresenta l’elaborazione a delta, per quel giorno di caricamento, dalla tabella
ST_CUSTOMER. Si riporta lo script della procedura e quello della creazione della tabella.
Tesi di Laurea Magistrale 2015/2016
56
Figura4.21: Script creazione WT_DELTA_DW_HIST_CUSTOMER
La tabella assume la stessa struttura di quella presente sullo Schema ST, ma è partizionata per record “aperti”, aventi DAT_END a foto aperta e record “chiusi”,
Tesi di Laurea Magistrale 2015/2016
57
Tesi di Laurea Magistrale 2015/2016
58 Figura4.22-2: PRC_WT_DELTA_DW_HIST_CUSTOMER
Tesi di Laurea Magistrale 2015/2016
59
La procedura sarà inserita come pre-mapping, per questo motivo nello script mostrato vengono effettuati molti check sulla correttezza dell’esecuzione e sono
previsti log sulla tabella predisposta nel sistema WT_LOG_PREPOST_MAPS. Nelle righe 45-67 vengono inseriti nella tabella sull’ODS i dati elaborati in quel giorno letti dalla ST_CUSTOMER.
I dati elaborati a delta vengono inseriti mediante il mapping MP_WT_H_CUSTOMER in TRUNCATE/INSERT all’interno della tabella WT_H_CUSTOMER che assumerà la stessa struttura delle precedenti. Si riporta lo script di creazione della tabella.
Tesi di Laurea Magistrale 2015/2016
60 Figura4.23: Script creazione WT_H_CUSTOMER
Infine, nell’ultimo passo presente nell’ODS, si provvede alla vera storicizzazione
attraverso il mapping MP_DW_HIST_CUSTOMER che scrive in INSERT/UPDATE nella tabella DW_HIST_CUSTOMER leggendo dalla WT_H_CUSTOMER. Attraverso la definizione della chiave primaria sulla tabella, e all’utilizzo del campo FLG_UPDATE, l’algoritmo del mapping inserisce i record non presenti sulla tabella ed esegue l’update di quelli con ID_CUSTOMER già
Tesi di Laurea Magistrale 2015/2016
61 Figura4.24-1: Script creazione DW_HIST_CUSTOMER
Tesi di Laurea Magistrale 2015/2016
62 Figura4.24-2: Script creazione DW_HIST_CUSTOMER
Anche in questo caso la tabella risulta partizionata secondo i record aperti e quelli chiusi. Così come evidenziato in precedenza l’ID_CUSTOMER rappresenta la chiave primaria della tabella; su esso viene costruito l’ indice
XPKDW_HIST_CUSTOMER.
Tesi di Laurea Magistrale 2015/2016
63
La vista VS_DM_CUSTOMER_DELTA permette il calcolo dei campi presenti nel modello logico che non erano ancora stati calcolati. Si parla, ad esempio del NUM_AGE, per il calcolo del quale si è intervenuti con funzioni matematiche. Altri esempi, invece, sono forniti dai descrittivi DES_STATUS_CUSTOMER, DES_TYPE_CUSTOMER, DES_OCCUPATION, DES_QUALIFICATION, DES_MARITAL_STATUS che vengono elaborati leggendo da altre tabelle presenti sul DWH. Ad esse, si accede per taglio temporale valido e per il COD della tabella rispettiva da cui si legge. I codici delle tabelle “esterne” sono stati riportati dal livello ST fino a questo step per poter permettere la join. Da questo momento, non verranno riportati più i codici, ma direttamente i descrittivi di interesse che si sono potuti ottenere dalla subselect.
Tesi di Laurea Magistrale 2015/2016
64 Figura4.25: VS_DM_CUSTOMER_DELTA
Tesi di Laurea Magistrale 2015/2016
65
d) DM
Infine, si è pensato di mostrare uno screen relativo alla creazione della tabella sul tool Toad, utilizzato sul progetto.
Figura4.26: DM_CUSTOMER dal tool Toad