Il proprietario del data warehouse deve decidere come rispondere ai cambiamenti nelle descrizioni di entità dimensionali come Dipendente, Cliente, Prodotto, Fornitore, Posizione e altri. In 30 anni di studio di questo problema, ho scoperto che sono necessari solo tre diversi tipi di risposte. Chiamo questi tipi di dimensione che cambiano lentamente (SCD) 1, 2 e 3. Nella colonna del mese scorso, ho descritto il tipo 1, che sovrascrive le informazioni modificate nella dimensione., In questa colonna descrivo i tipi 2 e 3.
Digitare 2: Aggiungere un nuovo record di dimensione
Modifichiamo lo scenario della colonna precedente in cui ho sovrascritto il campo Home City nel record dei dipendenti di Ralph Kimball per supporre che Ralph Kimball si sia effettivamente trasferito da Santa Cruz a Boulder Creek il 18 luglio 2008. Supponiamo che la nostra politica sia quella di tracciare con precisione gli indirizzi di casa dei dipendenti nel data warehouse. Questo è un classico Tipo 2 cambiamento.
Il tipo 2 SCD richiede che emettiamo un nuovo record dipendente per Ralph Kimball a partire dal 18 luglio 2008., Questo ha molti effetti collaterali interessanti:
- Il tipo 2 richiede che generalizziamo la chiave primaria della dimensione dipendente. Se la chiave naturale del dipendente di Ralph Kimball è G446, allora quella chiave naturale sarà la “colla” che tiene insieme i record multipli di Ralph Kimball. Non consiglio di creare una chiave primaria intelligente per SCD di tipo 2 che contenga la chiave naturale letterale. I problemi con le chiavi intelligenti diventano particolarmente evidenti se si integrano diversi sistemi HR incompatibili con chiavi naturali formattate in modo diverso., Piuttosto, dovresti creare chiavi primarie completamente artificiali che sono semplicemente numeri interi assegnati in sequenza. Chiamiamo queste chiavi chiavi surrogate. È necessario creare una nuova chiave primaria surrogata ogni volta che si elabora una modifica di tipo 2 in una dimensione.
- Oltre alla chiave surrogata primaria, consiglio di aggiungere cinque campi aggiuntivi a una dimensione in fase di elaborazione di tipo 2. Questi campi sono mostrati in Figura 1. I datetimes sono timbri a tempo pieno che rappresentano l’intervallo di tempo tra quando la modifica è diventata effettiva e quando la modifica successiva diventa effettiva., L’end-effective-datetime di un record di dimensione di tipo 2 deve essere esattamente uguale all’begin-effective-datetime della modifica successiva per quel membro di dimensione. Il record di dimensione più corrente deve avere un datetime end-effective uguale a un datetime fittizio lontano nel futuro. Il testo del motivo per la modifica deve essere tratto da un elenco di motivi pre-pianificati per una modifica, nel nostro esempio, agli attributi dei dipendenti. Infine, il flag corrente fornisce un modo rapido per isolare esattamente l’insieme di membri della dimensione in vigore al momento della query., Questi cinque campi amministrativi consentono agli utenti finali e alle applicazioni di eseguire molte query potenti.
- Con una dimensione in fase di elaborazione di tipo 2, è necessario prestare molta attenzione a utilizzare le corrette chiavi surrogate contemporanee di questa dimensione in ogni tabella dei fatti interessata. Ciò assicura che i profili di dimensione corretti siano associati all’attività della tabella dei fatti. Il processo ETL (Extract, transform and load) per allineare le tabelle delle dimensioni con le tabelle dei fatti al momento del caricamento è chiamato pipeline chiave surrogata ed è ampiamente trattato nei miei articoli e libri.,
Tipo 3: Aggiungi un nuovo campo
Sebbene gli SCD di tipo 1 e 2 siano le tecniche principali per rispondere ai cambiamenti in una dimensione, abbiamo bisogno di una terza tecnica per gestire realtà alternative. A differenza degli attributi fisici che possono avere un solo valore in un momento, alcuni attributi assegnati dall’utente possono legittimamente avere più di un valore assegnato a seconda del punto di vista dell’osservatore. Ad esempio, una categoria di prodotto può avere più di un’interpretazione., In un negozio di cartoleria, una penna di marcatura potrebbe essere assegnata alla categoria di articoli per la casa o alla categoria di forniture artistiche. Gli utenti finali e le applicazioni devono essere in grado di scegliere al momento della query quale di queste realtà alternative si applica.
Il requisito di una visione alternativa della realtà di un attributo dimension di solito è accompagnato da un sottile requisito che versioni separate della realtà siano disponibili in ogni momento nel passato e nel futuro, anche se la richiesta di rendere visibili queste realtà è arrivata al data warehouse oggi.,
Nella variante più semplice, c’è solo una realtà alternativa. In questo caso, per l’esempio di categoria di prodotto, aggiungiamo un nuovo campo nella dimensione, forse chiamato Categoria alternativa. Se la categoria primaria della nostra penna di marcatura usato per essere articoli per la casa e ora dovrebbe essere rifornimenti di arte, poi in un tipo 3 trattamento, spingiamo l’etichetta articoli per la casa nel campo di categoria alternativa e aggiorniamo il campo di categoria regolare con rifornimenti di arte sovrascrivendo. Il passaggio di sovrascrittura è simile a un SCD di tipo 1 e provoca tutti gli stessi avvertimenti nella colonna del mese scorso.,
Con i macchinari di tipo 3, gli utenti finali e le applicazioni possono passare senza problemi tra queste realtà alternative. Se l’ambiente richiede più di una realtà alternativa, questo approccio può essere generalizzato aggiungendo più campi alternativi, anche se ovviamente questo approccio non scala con grazia oltre alcune scelte.
I tre approcci SCD alla gestione della varianza temporale nelle dimensioni hanno un’enorme applicabilità nelle situazioni reali incontrate dal data warehouse., Tipo 2, in particolare, ci permette di fare bene sul data warehouse impegno a preservare fedelmente la storia.