Passa al contenuto principale

Caricamento di una dimensione a variazione lenta di tipo 2 di un data warehouse tramite Matillion sulla piattaforma Databricks Lakehouse

Gestione di SCD tipo 2 tramite Matillion su Databricks

Loading a Data Warehouse Slowly Changing Dimension Type 2 Using Matillion on Databricks Lakehouse Platform

Pubblicato: 25 gennaio 2023

Partner5 min di lettura

Questo è un post collaborativo tra Databricks e Matillion. Ringraziamo David Willmer, Product Marketing di Matillion, per il suo contributo.

 

Sempre più clienti che modernizzano il loro Enterprise Data Warehouse legacy e le piattaforme ETL meno recenti cercano di adottare uno stack di dati cloud moderno utilizzando Databricks Lakehouse Platform e Matillion per l'ETL basato su GUI. La piattaforma ELT visuale low-code di Matillion semplifica l'integrazione dei dati da qualsiasi origine in Databricks SQL Warehouse, rendendo così i dati di analisi e AI pronti per il business e più velocemente.

Questo blog ti mostrerà come creare una pipeline ETL che carica una dimensione a variazione lenta (SCD) di tipo 2 utilizzando Matillion nella Databricks Lakehouse Platform. Matillion ha un'interfaccia utente moderna basata su browser con funzionalità ETL/ELT push-down. Puoi integrare facilmente i tuoi warehouse SQL di Databricks o i cluster con Matillion. Ora, se ti stai chiedendo come connetterti a Matillion utilizzando Databricks, il modo più semplice per farlo è utilizzare Partner Connect, che semplifica il processo di connessione di un warehouse SQL o cluster esistente nel tuo workspace Databricks a Matillion. Ecco i passaggi dettagliati.

Che cos'è una dimensione a variazione lenta (SCD) di tipo 2?

Una SCD di tipo 2 è una tecnica comune per preservare la cronologia in una tabella delle dimensioni utilizzata in qualsiasi architettura di data warehousing/modellazione. Le righe inattive hanno un flag booleano come la colonna ACTIVE_RECORD impostata su "F" o una data di inizio e fine. Tutte le righe attive vengono visualizzate restituendo una query in cui la data di fine è nulla o ACTIVE_RECORD non è uguale a "F"

Tabella delle dimensioni prima delle modifiche SCD2 - Questa tabella del data warehouse rappresenta uno scenario tipico di etichettatura dei record inattivi con una "Data di fine".
Tabella delle dimensioni prima delle modifiche SCD2 - Questa tabella del data warehouse rappresenta uno scenario tipico di etichettatura dei record inattivi con una “Data di fine”.

Matillion ETL for Delta Lake on Databricks utilizza un approccio in due fasi per la gestione delle dimensioni a variazione lenta di tipo 2. Questo approccio in due fasi prevede innanzitutto l'identificazione delle modifiche nei record in entrata e l'assegnazione di un flag in una tabella o vista temporanea. Una volta contrassegnati tutti i record in entrata, è possibile intervenire sulla tabella delle dimensioni di destinazione per completare l'aggiornamento.

Ora, diamo un'occhiata più da vicino all'implementazione delle trasformazioni SCD di tipo 2 utilizzando Matillion, dove la tua destinazione è una tabella Delta Lake e l'opzione di calcolo sottostante utilizzata è un Databricks SQL Warehouse.

Passaggio 1: preparazione delle modifiche alle dimensioni

Come vediamo nel passaggio 1 di seguito, la pipeline ETL legge i dati dalla nostra tabella delle dimensioni Delta Lake esistente e identifica solo i record più recenti o attivi (questo è il flusso di dati inferiore). Allo stesso tempo, leggeremo tutti i nostri nuovi dati, assicurandoci che la chiave primaria prevista sia univoca in modo da non interrompere il processo di rilevamento delle modifiche (questo è il flusso di dati superiore). Questi due percorsi convergono quindi nel componente di rilevamento delle modifiche.

Passaggio 1: rileva le modifiche - Questa pipeline confronta i nuovi record di dati con i record di dati esistenti già presenti in una tabella delle dimensioni del tuo Lakehouse. Utilizzando il componente Rileva modifiche all'interno di Matillion ETL, i record vengono contrassegnati come Nuovi, Modificati o Eliminati e scritti in una vista intermedia.
Passaggio 1: rileva le modifiche - Questa pipeline confronta i nuovi record di dati con i record di dati esistenti già presenti in una tabella delle dimensioni del tuo Lakehouse. Utilizzando il componente Rileva modifiche all'interno di Matillion ETL, i record vengono contrassegnati come Nuovi, Modificati o Eliminati e scritti in una vista intermedia.

All'interno di Matillion ETL, il componente Rileva modifiche è un meccanismo centrale per determinare gli aggiornamenti e gli inserimenti per i record modificati. Confronta un set di dati in entrata con un set di dati di destinazione e determina se i record sono Identici, Modificati, Nuovi o Eliminati utilizzando un elenco di colonne di confronto configurate all'interno del componente. Ogni record del nuovo set di dati viene valutato e gli viene assegnato un campo indicatore nell'output del componente Rileva modifiche: "I" per Identico, "C" per Modificato, "N" per Nuovo e "D" per Eliminato.

Tabella di staging del data warehouse - Questa tabella rappresenta una tipica tabella di staging in un data warehouse che popola un campo "Codice di modifica" dopo aver confrontato i dati in entrata con una tabella di destinazione e aver determinato se i record sono Identici, Modificati, Nuovi o Eliminati.
Tabella di staging del data warehouse - Questa tabella rappresenta una tipica tabella di staging in un data warehouse che popola un campo “Codice di modifica” dopo aver confrontato i dati in entrata con una tabella di destinazione e aver determinato se i record sono Identici, Modificati, Nuovi o Eliminati.

L'azione finale nel passaggio 1 di questo approccio in due fasi consiste nell'aggiungere una data di caricamento a ogni record prima di scrivere ogni nuovo record, ora contrassegnato con il suo indicatore di modifica, in una tabella Delta Lake delle dimensioni temporanea. Questo diventerà l'input del passaggio 2.

LEADER PER LA 5ª VOLTA

Gartner®: Databricks leader dei database cloud

Passaggio 2: finalizzazione delle modifiche alle dimensioni

Passando al passaggio 2, iniziamo leggendo la tabella delle dimensioni intermedia o temporanea nel nostro lakehouse. Utilizzeremo il campo indicatore derivato dal componente Rileva modifiche e creeremo 3 percorsi separati utilizzando un semplice componente Filtro. Non faremo nulla per i record Identici (identificati con una "I") poiché non sono necessarie modifiche, quindi questi record vengono filtrati. Per essere espliciti nella nostra spiegazione all'interno di questo blog, abbiamo lasciato questo percorso. Tuttavia, sarebbe inutile per scopi pratici a meno che non fosse necessario fare qualcosa di specifico con questi record.

Passaggio 2: scrivi nella tabella delle dimensioni - Leggendo dalla tabella intermedia, Matillion filtra i record in base al rispettivo flag di modifica ed esegue le azioni appropriate per scrivere i nuovi dati nella tabella delle dimensioni.
Passaggio 2: scrivi nella tabella delle dimensioni - Leggendo dalla tabella intermedia, Matillion filtra i record in base al rispettivo flag di modifica ed esegue le azioni appropriate per scrivere i nuovi dati nella tabella delle dimensioni.

Il percorso successivo, per i record Nuovi o Modificati, genererà un nuovo record corrente per ogni record nuovo o modificato identificato. Il componente Filtro elabora solo i record con una "N" (per Nuovo) o "C" (per Modificato) come identificato dal componente Rileva modifiche. Il componente Rinomina funge da mapper di colonne per mappare i dati modificati dai campi dei nuovi record (identificati dal prefisso compare_) ai nomi effettivi delle colonne come definito dalla tabella delle dimensioni di destinazione Delta Lake. Infine, il componente "Nuovi campi" è un componente Calcolatore configurato per impostare il timestamp di scadenza dei record attivi su "infinito", identificandoli così come il record più recente.

Componente Rinomina - Il componente Rinomina funge da mapper di colonne per mappare i dati modificati dai campi dei nuovi record (identificati dal prefisso compare_) ai nomi effettivi delle colonne della tabella delle dimensioni di destinazione all'interno del Lakehouse.
Componente Rinomina - Il componente Rinomina funge da mapper di colonne per mappare i dati modificati dai campi dei nuovi record (identificati dal prefisso compare_) ai nomi effettivi delle colonne della tabella delle dimensioni di destinazione all'interno del Lakehouse.

Il percorso finale consiste nel chiudere o far scadere i record esistenti identificati come Modificati o Eliminati. Ricorda, in SCD2, le modifiche vengono aggiunte come un nuovo record (come descritto nel percorso Nuovo o Modificato sopra) e quindi ogni record precedente deve essere contrassegnato come scaduto o inattivo. Allo stesso modo, i record eliminati necessitano di una data di scadenza in modo che non siano più identificati come attivi. Qui, il percorso Modificato o Eliminato elabora ogni "C" (per Modificato) o "D" (per Eliminato) mappando le colonne appropriate che identificano in modo univoco il record per la scadenza. Una volta identificata, la data di scadenza viene impostata sul timestamp corrente e l'aggiornamento viene eseguito all'interno della tabella delle dimensioni di destinazione Delta Lake.

Tabella delle dimensioni dopo gli aggiornamenti SCD2 - Questa tabella rappresenta la tabella delle dimensioni finale del data warehouse una volta applicate tutte le transazioni dalla tabella di staging.
Tabella delle dimensioni dopo gli aggiornamenti SCD2 - Questa tabella rappresenta la tabella delle dimensioni finale del data warehouse una volta applicate tutte le transazioni dalla tabella di staging.

Conclusione

Ti abbiamo mostrato come implementare dimensioni a variazione lenta sulla piattaforma Databricks Lakehouse utilizzando l'integrazione dei dati low-code/no-code di Matillion. È un'opzione eccellente per tutte quelle organizzazioni che preferiscono strumenti ETL basati su GUI, come Matillion, per implementare e mantenere pipeline di data engineering, data science e machine learning sul cloud. Sblocca davvero la potenza di Delta Lake su Databricks e migliora la produttività dei dati, offrendoti le prestazioni, la velocità e la scalabilità per alimentare la tua analisi dei dati cloud.

Se desideri saperne di più sull'integrazione di Matillion e Databricks, non esitare a consultare la documentazione dettagliata qui.

Prova Databricks gratuitamente per 14 giorni.

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Non perdere mai un post di Databricks

Iscriviti al nostro blog e ricevi gli ultimi post direttamente nella tua casella di posta elettronica.