La semantica delle diverse tecniche SCD2
La bellezza delle diverse tecniche SCD2
Come piccole differenze possono avere un grande impatto
Recentemente, ho riflettuto molto sul modellamento dimensionale, in particolare su come rappresentiamo diversi tipi di storia nel magazzino / lakehouse. Ci sono molti articoli che descrivono come costruire una tabella SCD2 in molti linguaggi e piattaforme. Tuttavia, voglio concentrarmi su qualcosa di più sfumato e meno discusso comunemente: la semantica di SCD2 e come diverse scelte di progettazione hanno conseguenze significative sui casi d’uso.
I due principali argomenti che voglio trattare sono:
- Le date che scegli di versionare riga per riga le tue dimensioni contano molto. La scelta non dovrebbe mai essere arbitraria e i casi d’uso più comuni dovrebbero essere i primi a venire in mente nel tuo design.
- Come versioni riga determineranno i pattern di accesso alle tue tabelle. In certa misura, questo è strettamente ergonomia, ma arguirei che l’ergonomia è un aspetto importante della qualità dei dati; rendere facile per gli utenti fare la cosa giusta dovrebbe essere il nostro obiettivo come progettisti di modelli di dati.
Scelta delle date di riferimento
Il modello più comune per creare una tabella SCD2 consiste nell’utilizzare una data o un timestamp nei dati. Una volta stabilito che una riga ha cambiato significativamente, sia attraverso il confronto diretto delle colonne che la comparazione dei valori di hash, dovrai stabilire le date per “ritirare” i record esistenti e inserire nuovi record.
Ma quale data utilizzeremo? Per molti tipi di dati, potremo scegliere tra tre opzioni:
- Potenziare l’IA generativa con la Generazione Assistita dal Recupero Architettura, Algoritmi e Panoramica delle Applicazioni
- Grafico RAG Svelare il potere dei grafi di conoscenza con LLM
- Bell’arte AI Incoraggiare Dalle-2 a creare immagini di storie tecniche caratteristiche
- Estrarre i timestamp
- Timestamp del sistema di origine
- Timestamp aziendali (entità / evento)
Scopriamoli nel dettaglio.
Estrarre i timestamp
Questa metodologia considera, “Come apparivano i dati grezzi quando li abbiamo catturati.” La fonte di verità è il tuo magazzino e i processi che lo caricano, piuttosto che gli attributi essenziali dei dati stessi.
Considera l’esempio seguente:
Da questo record, genereremmo il seguente record SCD2 (omittendo alcuni campi di metadati come chiave surrogate, hash, timestamp di inserimento delle dimensioni, ecc. per leggibilità):