I dati dimensionali che cambiano lentamente o in modo imprevedibile vengono acquisiti nelle analisi delle dimensioni che cambiano lentamente (SCD). In un ambiente di data warehouse, una tabella dimensionale dispone di una chiave primaria che identifica in modo univoco ogni record e altre informazioni note come dati dimensionali.
Tutti i metodi di aggiornamento per i diversi tipi di SCD vengono eseguiti utilizzando il programma SortCL in IRI CoSort. In IRI Voracity è disponibile una procedura guidata per facilitare la creazione degli script di lavoro SCD utilizzati durante l'esecuzione del programma SortCL. La maggior parte dei tipi SCD utilizza un join esterno completo per abbinare i record dell'origine dati originale ai record nell'origine aggiornata in base all'equazione di una chiave di ciascuno. Il tipo 4, tuttavia, esegue l'aggiornamento utilizzando un ordinamento.
SCD di tipo 4
Il modello di Tipo 4 è simile a quello di Tipo 2. La differenza è che ci sono 2 tabelle o file che vengono mantenuti:uno per i costi correnti e uno per conservare i record storici per i costi. Quando vengono aggiunti nuovi record correnti al master, questi nuovi record vengono generalmente aggiunti alla cronologia contemporaneamente.
Le definizioni dei campi sono le stesse nell'aggiornamento, nella cronologia e nei file o tabelle principali. Ordineremo insieme i record per l'aggiornamento e la cronologia. Verrà creato un nuovo master con un solo record per ogni ProductCode e quel record sarà il più aggiornato. La cronologia conterrà tutti i record per ogni CodiceProdotto compresi quelli dalla fonte di aggiornamento.
La tabella principale iniziale sarà la stessa della tabella principale iniziale del nostro esempio di Tipo 1 con i valori mostrati di seguito.
Codice prodotto | Costo | Data di inizio |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19:25 | 20110930 |
J245 | 450,50 | 20110430 |
S022 | 98,75 | 20110515 |
Tutti i dati di aggiornamento avranno tutti lo stesso StartDate. L'origine update.dat contiene record con i seguenti valori:
Codice prodotto | Costo | Data di inizio |
---|---|---|
F112 | 2425,00 | 20120701 |
J245 | 550,50 | 20120701 |
M447 | 101,75 | 20120701 |
S022 | 101,75 | 20120701 |
L'origine della cronologia iniziale di seguito è come il master iniziale nel tipo 2. Quindi il tipo 4 è una combinazione di tipo 1 e tipo 2 in cui il master è lo stesso di un master di tipo 1 e la cronologia è la stessa di un master di tipo 2.
Codice prodotto | Costo | Data di inizio |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19:25 | 20110930 |
G101 | 21:25 | 20110501 |
J245 | 450,50 | 20110430 |
J245 | 425,25 | 20101001 |
J245 | 385,25 | 20100215 |
S022 | 98,75 | 20110515 |
In IRI Workbench, è disponibile una procedura guidata Voracity per assistere nella creazione di script per l'aggiornamento di file e tabelle dimensionali. Questa procedura guidata si trova nel menu a discesa Voracity sulla barra di navigazione. Per prima cosa scegli il tipo di SCD. Quindi viene visualizzata la finestra in cui si selezionano le origini utilizzate per l'elaborazione dell'aggiornamento.
La schermata successiva è dove si imposta l'ordinamento selezionando i tasti. Ci sono 2 chiavi:ProductCode quindi Data di inizio . Stiamo raggruppando per ProductCode , ma dobbiamo anche ordinare in ordine decrescente per StartDate all'interno di ogni Codice Prodotto raggruppamento. In questo modo possiamo filtrare il record più recente per ogni Codice prodotto gruppo al nuovo master.
Per creare la StartDate una chiave che ordina in ordine decrescente, seleziona quella chiave e quindi seleziona Modifica chiave . Verrà visualizzata la seguente schermata:
Nel menu a discesa per Direzione seleziona Decrescente .
Ecco lo script di lavoro per l'ordinamento:
/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD4/history4.dat /PROCESS=DELIMITED /ALIAS=history4 /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/update.dat /PROCESS=DELIMITED /ALIAS=update /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /SORT /KEY=(PRODUCTCODE, TYPE=ASCII) /KEY=(STARTDATE, DESCENDING, TYPE=ASCII) /OUTFILE=history4.dat # This file will contain all the records from both inputs /PROCESS=DELIMITED /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /OUTFILE=master4.dat # Include only one record for each ProductCode /PROCESS=DELIMITED /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INCLUDE WHERE PRODUCTCODE
Di seguito è riportato il master aggiornato prodotto eseguendo lo script di lavoro precedente utilizzando SortCL. I valori sono gli stessi prodotti in un aggiornamento di tipo 1.
Codice prodotto | Costo | Data di inizio |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425,00 | 20120701 |
G101 | 19:25 | 20110930 |
J245 | 550,50 | 20120701 |
M447 | 139,25 | 20120701 |
S022 | 101,75 | 20120701 |
Il file della cronologia contiene tutti i record precedenti più i nuovi record del file di aggiornamento.
Codice prodotto | Costo | Data di inizio |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425,00 | 20120701 |
F112 | 2365.00 | 20120101 |
G101 | 19:25 | 20110930 |
G101 | 21:25 | 20110501 |
J245 | 550,50 | 20120701 |
J245 | 450,50 | 20110430 |
J245 | 425,25 | 20101001 |
J245 | 385,25 | 20100215 |
M447 | 101,75 | 220120701 |
S022 | 101,75 | 20120701 |
S022 | 98,75 | 20110515 |