Implementare dimensioni a variazione graduale
I dati delle dimensioni cambiano nel tempo. I clienti si spostano in nuove città, i prodotti vengono rinominati e i dipendenti trasferiscono tra i reparti. Un ruolo primario di un data warehouse consiste nel descrivere accuratamente il passato, quindi è necessaria una strategia per la gestione di queste modifiche. I modelli di dimensione a modifica lenta definiscono il modo in cui il modello dimensionale risponde quando cambiano i dati di origine.
Comprendere i tipi di SCD
Requisiti aziendali diversi richiedono approcci diversi per tenere traccia delle modifiche. I tipi scD seguenti vanno dall'ignorare completamente le modifiche alla gestione completa dei record cronologici.
Tipo 0: Mantenere l'originale
Il tipo 0 mantiene il valore originale e non consente mai le modifiche. Usare il tipo 0 per i dati di riferimento fissi che non devono essere modificati, ad esempio un punteggio di credito originale al momento dell'applicazione o una data di nascita.
Tipo 1: Sovrascrivere
Il tipo 1 sovrascrive il valore esistente con il nuovo valore. Non viene mantenuta alcuna cronologia. Questo approccio è appropriato quando:
- La modifica è una correzione di un errore.
- L'accuratezza cronologica per l'attributo modificato non è importante.
- È necessaria la manutenzione più semplice possibile.
Ad esempio, se l'indirizzo di posta elettronica di un cliente cambia, un aggiornamento di tipo 1 sostituisce il vecchio messaggio di posta elettronica con quello nuovo. Tutti i fatti cronologici associati al cliente ora riflettono l'indirizzo di posta elettronica corrente.
Annotazioni
Le modifiche di tipo 1 possono influire sull'analisi cronologica. Se un venditore viene riassegnato a una nuova area e si sovrascrive l'area, tutte le vendite passate vengono visualizzate nella nuova area. Valutare se questo comportamento soddisfa i requisiti di creazione di report.
Tipo 2: Aggiungere una nuova riga
Il tipo 2 inserisce una nuova riga per ogni modifica, mantenendo la cronologia completa. La riga originale rimane e ogni versione del membro della dimensione ottiene la propria chiave surrogata. Questo tipo scD è più comune per gli attributi in cui l'accuratezza cronologica è importante.
Un'implementazione di tipo 2 richiede colonne aggiuntive:
| colonna | Scopo |
|---|---|
| Data di inizio | Quando questa versione è diventata effettiva |
| Data di fine | Quando questa versione è stata sostituita (le righe correnti usano una data futura lontana, ad esempio 9999-12-31) |
| È il flag corrente | Identifica la versione attiva per le ricerche durante il caricamento della tabella dei fatti |
Quando si verifica una modifica, il processo ETL:
- Aggiorna la riga corrente esistente impostandone la data di fine e modificando il flag corrente su
FALSE. - Inserisce una nuova riga con i nuovi valori di attributo, una nuova chiave surrogata, la data di inizio impostata sulla data di modifica e il flag corrente impostato su
TRUE.
Il tipo 2 è essenziale quando è necessario analizzare accuratamente il passato. Ad esempio, se è necessario segnalare le vendite in base all'area a cui è stato assegnato un venditore al momento di ogni vendita, il rilevamento di tipo 2 mantiene tale contesto.
Tipo 3: Aggiungere una nuova colonna
Il tipo 3 aggiunge una colonna per archiviare il valore precedente insieme al valore corrente. Questo approccio tiene traccia della cronologia limitata, in genere solo la modifica più recente.
Ad esempio, una dimensione venditore può includere sia le colonne CurrentSalesRegion che PreviousSalesRegion. Quando il venditore si sposta, l'area corrente si sposta alla colonna precedente e la nuova area diventa quella corrente.
Il tipo 3 è utile quando è sufficiente confrontare lo stato corrente con uno stato precedente. Tuttavia, non viene comunemente usato perché si perdono tutte le modifiche intermedie.
Tipo 6: Approccio ibrido
Il tipo 6 combina elementi di tipo 1, tipo 2 e tipo 3. Mantiene la cronologia delle versioni completa (tipo 2) archiviando il valore corrente in ogni riga (tipo 1 sovrascrivere in una colonna specifica) e il valore precedente (tipo 3).
Questo ibrido consente alle query di accedere sia al contesto cronologico che al contesto corrente da qualsiasi riga di versione. Tuttavia, aggiunge complessità al processo ETL perché ogni riga per un membro della dimensione deve essere aggiornata quando il valore corrente cambia.
Scegliere il tipo scD corretto
Usare le indicazioni seguenti per selezionare il tipo di scD appropriato:
| Requisito | Tipo consigliato |
|---|---|
| Dati di riferimento fissi che non cambiano mai | Tipo 0 |
| Correzioni o cronologia non necessarie | Tipo 1 |
| Accuratezza cronologica completa richiesta | Tipo 2 |
| È necessario solo confronto corrente e precedente | Tipo 3 |
| Sono necessarie visualizzazioni correnti e cronologiche in ogni riga | Tipo 6 |
Prendere in considerazione i compromessi di implementazione
Ogni tipo di scD ha implicazioni relative a costi e complessità:
- Archiviazione: le dimensioni di tipo 2 aumentano nel tempo man mano che si accumulano righe di versione nuove. Pianificare un aumento dello spazio di archiviazione e valutare il modo in cui la crescita influisce sulle prestazioni delle query.
- Complessità delle query: l'unione di tabelle dei fatti alle dimensioni di tipo 2 richiede la corrispondenza sulle date di validità o l'uso del flag attuale, con un aumento della complessità delle query.
- Complessità ETL: il tipo 2 e il tipo 6 richiedono una logica ETL più sofisticata per rilevare le modifiche, scadere le righe precedenti e inserire nuove versioni.
- Requisiti aziendali: la scelta del tipo scD deve essere guidata dalle esigenze aziendali. Non registrare la cronologia dove non è necessaria e non trascurare il rilevamento della cronologia dove lo è.
Suggerimento
Evitare di applicare il rilevamento di tipo 2 a ogni attributo in una dimensione. Tenere traccia della cronologia solo sugli attributi in cui l'azienda richiede un'analisi cronologica. Utilizzare il tipo 1 per il resto per mantenere gestibile la dimensione.