Come piccole differenze possono avere un grande impatto

fotografato da Brad Starkey SU Unsplash

Recentemente ho pensato molto alla modellazione dimensionale, in particolare al modo in cui rappresentiamo diversi tipi di storia nel magazzino/casa sul lago. Sono disponibili molti articoli che descrivono come creare una tabella SCD2 in molti linguaggi e piattaforme. Voglio invece concentrarmi su qualcosa di più sfumato e meno comunemente discusso: la semantica di SCD2 e il modo in cui le varie scelte di progettazione hanno conseguenze significative sui casi d’uso.

I due argomenti principali che voglio trattare sono:

  1. Le date che scegli per la versione in riga delle tue dimensioni contano parecchio. La scelta non dovrebbe mai essere arbitraria e i casi d’uso più comuni dovrebbero essere prioritari nella progettazione.
  2. Il modo in cui i record della versione di riga determineranno i modelli di accesso alle tabelle. In una certa misura ciò è strettamente ergonomico, ma direi che l’ergonomia è un aspetto importante della qualità dei dati; rendere più facile per gli utenti fare la cosa giusta dovrebbe essere il nostro obiettivo come modellatori di dati.

Il modello più comune per la creazione di una tabella SCD2 utilizza una data o un timestamp nei dati. Una volta stabilito che una riga è cambiata in modo significativo, tramite confronto diretto di colonne o confronto di valori hash, sarà necessario stabilire le date per “ritirare” i record esistenti e inserire nuovi record.

Ma quali date usiamo? Per molti tipi di dati, potremo scegliere tra una delle tre opzioni:

  • Estrai timestamp
  • Timestamp del sistema di origine
  • Timestamp aziendali (entità/evento).

Immergiamoci.

Estrai timestamp

Questo metodo prende la prospettiva di “Come apparivano i dati grezzi quando li abbiamo acquisiti”. La fonte della verità è il tuo magazzino e i processi che lo caricano, in contrapposizione a qualsiasi attributo essenziale dei dati stessi.

Considera il seguente esempio:

Da questo record, genereremo il seguente record SCD2 (omettendo alcuni campi di metadati come una chiave surrogata, hash, timestamp di inserimento dimensione, ecc. per leggibilità):

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *