Nell’articolo di oggi vorrei concentrarmi su Slowly Changing dimension, ovvero SCD. Dimension è una parola estratta dal data warehousing in quanto tale. Non senza un motivo SCD è usato molto spesso in termini di argomenti di Data Warehouse (DW) e può essere utilizzato per scopi di audit nei sistemi OLTP.

L’obiettivo dell’articolo è quello di rivedere i tipi di Dimensione che cambia lentamente in quanto ci sono poche versioni di essi.

I dati cambiano nel tempo., Potrebbe non interessarti la versione storica dei dati nel database OLTP, ma potrebbe essere un requisito aziendale per mantenere tutte le modifiche storiche. In altre parole, è necessario essere in grado di mostrare, in un rapporto di vendita, un ufficio regionale corretto di una persona di vendita, non importa quando la persona ha cambiato la regione. In tal caso dobbiamo conservare i dati prima della modifica e dopo l’aggiornamento.

Come funzionano le trasformazioni?

Esistono pochi tipi di SCD.

A seconda del tipo SCD è possibile mantenere nessuna, una o più modifiche storiche delle righe.,
L’idea è semplice: ogni volta che la riga cambia, una vecchia versione (prima di AGGIORNARE o ELIMINARE) della riga verrà mantenuta nella tabella SCD.
L’implementazione di queste cose non è sempre facile. Diamo un’occhiata agli esempi.

Come esempio di dati di origine userò la seguente riga di dati:

Esempio di dati di origine SCD

Nell’esempio precedente, CustomerId è un PrimaryKey nel database di origine (OLTP).,
Introduciamo la chiave surrogata (CustomerKey) in DW per evitare la duplicazione di CustomerId originale e per ottimizzare le prestazioni, specialmente quando il sistema di origine utilizza caratteri o chiavi complesse.

SCD data in Data Warehouse example

SCD Type 0

Questo tipo non mantiene alcuna modifica degli attributi. Mantiene solo il valore originale senza alcuna modifica. Ha usato principalmente per attributi che non possono essere modificati, come la data di nascita.,

SCD Tipo 1: sovrascrivendo la cronologia di un attributo

Questo metodo non può tenere traccia delle modifiche nei dati e sovrascrive i vecchi dati con nuovi. Una volta che il nostro cliente cambia il suo indirizzo, il nuovo indirizzo sovrascriverebbe:

SCD Type 1

Come puoi vedere – è molto semplice implementare e mantenere il processo – è semplice aggiornamento. In altre mani, lo svantaggio di questo approccio è la mancanza della cronologia di row nel Data Warehouse.,

SCD Type 2: aggiunta di nuove righe

La metodologia sta preservando la cronologia aggiungendo nuove righe e non vi è alcun limite al numero di modifiche di mantenimento.,iv id=”f3da287bb9″>

SCD Tipo 2

Inoltre, è possibile decidere in che modo si desidera conoscere più anziani righe per mantenere l’attuale bandiera a colonna e/o UpdateDate:

SCD di Tipo 2 con l’attuale bandiera

o versione di fila che viene incrementato in modo sequenziale:

SCD di Tipo 2 con la versione

SCD Tipo 3: ulteriori colonne antiche

In questo approccio è possibile gestire una quantità limitata di storia con l’aggiunta di colonne per attributi di monitoraggio.,
Volendo avere la città precedente e attuale del cliente è possibile implementare le colonne: PreviousCity e CurrentCity. Ci sarà solo una riga nel Data Warehouse (DW) per database di origine, quindi il tipo 3 ha un’usabilità limitata ed è meno popolare del tipo 1 e 2.

SCD Tipo 3

È necessario fare attenzione se si desidera utilizzare il tipo 3 di SCD. Assicurati che Business Analyst e / o il tuo cliente siano a conoscenza dei limiti della cronologia.,

SCD Tipo 4: Tabella storica separata

Questo tipo utilizza tabelle separate per mantenere i record correnti e le modifiche storiche. Ne vale la pena utilizzare quando:
• la Dimensione cambia abbastanza spesso o
• la Dimensione multi-milioni di righe della tabella

SCD Tipo 4 tabella corrente

SCD Tipo 4 – tabella storica

Margy Ross Kimball chiamate di Gruppo tali tabelle come “mini-dimensione”.,

SCD Tipo 6:

Questo approccio è numerato come 6 come 1+2+3=6 pure 1x2x3=6. Quindi si tratta di una combinazione di queste tre tipologie:
• Tenere entrambi i precedenti e attuali i valori per l’attributo (Tipo 3, guarda colonne: “HistoricCity”, “CurrentCity”)
• Sostituisce tutti i record per la versione corrente di attributo (Tipo 1, guardare la colonna “CurrentCity”)
• Mantiene la storica versione di attributo (come di Tipo 2, guarda come colonne: “IsCurrent”, “Datainizio”, “Datafine”)br>
vediamo come la riga è di essere cambiato e di come la sua influenza su di DW., Il primo caricamento della riga:

SCD Tipo 6 (passo 1)

Righe in DW Cliente tabella seguente primo cliente di rilocazione:

SCD Tipo 6 (fase 2)

Righe in DW Cliente tabella seguente secondo cliente di rilocazione:

SCD Tipo 6 (fase 3)

Che Tipo dovrei scelta?,

Come consulente professionale rispondo professionalmente:

Dipende

Chiedi al tuo team aziendale, business analytics o al tuo cliente: di cosa hanno bisogno nel data warehouse.
Forse non l’ho detto abbastanza forte, ma nella stessa tabella puoi applicare diversi tipi SCD a ogni colonna.
Ad esempio: digitare 2 nella colonna Città, Digitare 1 nella colonna Data di nascita. Tutti nella stessa tabella.
Quindi chiedi loro per ogni dimensione:
• quali attributi sono costanti,
• quali attributi sono variabili?,
* quali attributi dovrebbero essere completamente tracciati, che dovrebbero mantenere solo la versione precedente e corrente?
* Quante righe sono nella tabella in questo momento / sono previste nei prossimi 10 anni?
Mantenere queste risposte come prova. Le persone, in particolare i clienti, amano cambiare idea. Sai cosa intendo.
Se non sei ancora sicuro di quale scegliere, ricorda che:

Mantenere una cronologia delle modifiche è buono per te

Semplicemente perché i requisiti potrebbero cambiare.
Accanto ai tipi 0 e 1, a mio parere, i più popolari sono il Tipo 2 e il Tipo 4.

Come caricare i dati in SCD?,

Buona domanda. Ma questo argomento è una storia completamente diversa.
Prima di preparare il prossimo post su di esso – dai un’occhiata a questo strumento:
SCD Merge Wizard
Lo strumento ti aiuta a creare, gestire e mantenere la mappatura tra database di origine (ad esempio staging) e database di destinazione (Data Warehouse). Inoltre, con questo approccio si utilizzerà l’istruzione MERGE per eseguire operazioni di caricamento utilizzando il tipo SCD configurato per ogni colonna.
In ulteriori post, spiegherò come applicare diversi tipi di SCD in questo strumento.

Buona fortuna con i tuoi carichi,
Kamil