Database
 sql >> Database >  >> RDS >> Database

SCD tipo 4

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