dbt Core, Snowflake e GitHub Actions: progetto preferito per ingegneri di dati |  di Kyiv Data Girl – Kateryna |  Dicembre 2023

 | Intelligenza-Artificiale

Pet Project per ingegneri di dati/analisi: esplora i moderni strumenti per lo stack di dati: azioni dbt Core, Snowflake, Fivetran e GitHub.

fotografato da Guadagnare immagini SU Unsplash

Ecco un progetto semplice e veloce per ingegneri di dati/analisi che vogliono mettere alla prova gli strumenti Modern Data Stack tra cui dbt Core, Snowflake, Fivetran e GitHub Actions. Questa esperienza pratica ti consentirà di sviluppare un ciclo di vita dei dati end-to-end, dall’estrazione dei dati dal tuo Google Calendar alla presentazione in una dashboard di analisi di Snowflake. In questo articolo ti guiderò attraverso il progetto, condividendo approfondimenti e suggerimenti lungo il percorso. Vedi il repository Github.

L’architettura del progetto è rappresentata come segue:
Calendario di Google -> Fivetran -> Fiocco di neve -> dbt -> Cruscotto del fiocco di nevecon Azioni GitHub orchestrare la distribuzione.

Architettura

Facendo riferimento a “Fundamentals of Data Engineering” di Joe Reis, esaminiamo il nostro progetto in linea con le fasi definite del ciclo di vita dei dati:

Ciclo di vita dell’ingegneria dei dati (1)
  • Generazione dei dati — Google Calendar, Fivetran
    Se sei un utente di Google Calendar, è probabile che tu abbia accumulato una grande quantità di dati lì. Ora puoi recuperarli facilmente dal tuo account sfruttando le “piattaforme di movimento dati” come Fivetran. Questo strumento automatizza il processo ELT (Estrai, Carica, Trasforma), integrando i tuoi dati dal sistema di origine di Google Calendar al nostro data warehouse Snowflake.
    A partire da ora, Fivetran offre una prova gratuita di 14 giorni — collegamento. La registrazione è molto semplice.
  • Magazzinaggio – Fiocco di neve
    Snowflake, un data warehouse basato su cloud su misura per le esigenze analitiche, fungerà da nostra soluzione di archiviazione dei dati. Il volume di dati di cui ci occuperemo è piccolo, quindi non cercheremo di esagerare con il partizionamento dei dati, i viaggi nel tempo, Snowpark e altre funzionalità avanzate di Snowflake. Porremo però particolare attenzione al Controllo Accessi (questo verrà utilizzato per l’accesso al dbt). Devi impostare un account di prova che ti offre 30 giorni di utilizzo gratuito e un limite di 400 $ per l’edizione Enterprise.
  • Ingestione — Fivetran
    L’acquisizione dei dati può essere configurata sia da Fivetran che da Snowflake utilizzando la funzione Partner Connect. Scegli il tuo metodo preferito e configura il connettore Google Calendar. Dopo la sincronizzazione iniziale, puoi accedere ai tuoi dati dall’interfaccia utente di Snowflake. È possibile visitare la pagina Web del connettore per visualizzare il diagramma dello schema Qui.
    Verrà creato un nuovo database appositamente per la sincronizzazione Fivetran e il magazzino corrispondente per eseguire carichi di lavoro SQL. Come dovresti sapere, Snowflake è costruito con storage e calcolo disaccoppiati, quindi anche i costi sono separati. Come best practice, dovresti utilizzare warehouse diversi per carichi di lavoro diversi (ad hoc, sincronizzazione, analisi BI) o ambienti diversi (sviluppo, produzione).
Vai su Partner Connect per connetterti a Fivetran
Configura il connettore Google Calendar in Fivetran
I dati sincronizzati vengono visualizzati in Snowflake
  • Trasformazione – dbt Core
    Con i dati che risiedono in Snowflake (e che si sincronizzano automaticamente ogni 6 ore per impostazione predefinita), passiamo alla fase di trasformazione utilizzando dbt Core. dbt (strumento di creazione dati) facilita la modularizzazione delle query SQL, consentendo il riutilizzo e il controllo della versione dei flussi di lavoro SQL, proprio come viene generalmente gestito il codice software. Esistono due modi per accedere a dbt: dbt Cloud e dbt Core. dbt Cloud è una versione a pagamento del servizio basata su cloud e dbt Core è un pacchetto Python che fornisce tutte le funzionalità che puoi utilizzare gratuitamente.
    Installa dbt Core sul tuo computer, inizializza il progetto utilizzando “inizializzazione DB” comando nella CLI e configurare la connessione Snowflake. Vedi l’esempio del mio file profiles.yml.
    Per poterci connettere a Snowflake, dovremo anche eseguire una serie di comandi SQL DCL (Data Control Language), trovali Qui. Seguendo il principio del privilegio minimo, creeremo un utente separato per dbt e gli daremo accesso solo al database di origine (dove Fivetran sincronizza i dati) e ai database di sviluppo e produzione (dove affonderemo i dati trasformati).
  • Seguendo il approccio di strutturazione delle migliori praticheè necessario creare tre cartelle che rappresentano il file strati di stadiazione, intermedi e mart delle tue trasformazioni di dati. Qui puoi sperimentare con i tuoi modelli, ma puoi anche copiare i miei esempi per i dati di Google Calendar.
    Nel repository troverai il file “sources.yml” che elenca tutte le tabelle nello schema di Google Calendar. Sono stati creati 3 modelli di staging (event.sql,
    attendee.sql, recurrence.sql), 1 modello di trasformazione (utc_event.sql) e 1 modello mart (event_attendee_summary.sql).
    Le caratteristiche importanti di dbt sono Jinja e macro che puoi integrare in SQL, migliorandone l’impatto e la riusabilità.
Scegli diversi tipi di materializzazioni del modello
  • Definisci le aspettative sui dati utilizzando test generici o singolari in dbt per garantire la qualità dei dati. Alcune regole sulla qualità dei dati sono inserite nel file “source.yml”,
    così come nella cartella “/tests”. Durante “costruzione dbt” comandare che questi controlli sulla qualità dei dati verranno eseguiti insieme ai modelli creati per prevenire la corruzione dei dati.
Puoi eseguire test utilizzando “dbt test”
  • Esplora la funzione Snapshot di dbt per l’acquisizione dei dati di modifica e le dimensioni a modifica lenta di tipo 2. Nel nostro esempiocatturiamo i cambiamenti nella tabella “ricorrenza”.
Archivia gli snapshot in uno schema separato
  • Prendetevi un po’ di tempo per generare la documentazione dbt utilizzando il file “generazione documenti dbt” comando. Vedrai il grafico della derivazione dei dati e i metadati che vengono creati automaticamente dal tuo progetto. Puoi migliorarlo ulteriormente aggiungendo descrizioni alle entità dati nei tuoi file .yml.
    Una buona documentazione garantisce una migliore rilevabilità e governance dei dati.
eseguire “dbt docs serve” per aprirlo nel browser
  • Servendo – Cruscotto del fiocco di neve
    Infine, visualizza i tuoi dati trasformati utilizzando Snowflake Dashboards. Crea una dashboard nell’interfaccia utente di Snowflake e sperimenta i riquadri (grafici) in base alle tue query SQL.
Esempio del cruscotto
  • Distribuzione — Azioni GitHub
    Sebbene dbt Cloud offra un’opzione di distribuzione semplice, utilizzeremo i flussi di lavoro GitHub Actions per il nostro progetto dbt Core. È necessario creare un file file .yml del flusso di lavoro che verrà attivato ogni volta che le modifiche vengono inviate al repository dbt GitHub, eseguendo azioni specificate. Nel mio flusso di lavoro di esempio, puoi vedere un processo di distribuzione in due passaggi: creazione dbt per l’ambiente di sviluppo e anche in caso di successo dbt
    costruire
    per l’ambiente produttivo.
    Nota: sostituisci i segreti come l’account e la password Snowflake con i segreti GitHub. Per questo, nella pagina web del repository, vai su Impostazioni -> Segreti e variabili -> Azioni.
    Ogni volta che il ramo “master” viene aggiornato, puoi vedere il flusso di lavoro avviato nella scheda Azioni sul repository:
Vedi Risultati delle azioni

Fonte: towardsdatascience.com

Lascia un commento

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