Configurare il progetto dbt e caricare i dati

Case Study: creazione di modelli di dati E‑Commerce con dbt

Susan Sun

Freelance Data Scientist

Ripasso: setup e inizializzazione di dbt

Installa dbt

pip install dbt

Inizializza il progetto dbt looker_ecommerce

dbt init looker_ecommerce

Verifica l'installazione

cd looker_ecommerce
dbt debug

Directory auto-generata da dbt:

Una ripetizione dello screenshot della lezione precedente. Mostra le directory generate da dbt init. La cartella principale è looker e-commerce. Le sottocartelle sono analyses, macros, models, seeds, snapshots e tests. Ci sono anche tre file: gitignore, dbt project yaml e un readme markdown.

Case Study: creazione di modelli di dati E‑Commerce con dbt

Conosci i dati: centri di distribuzione

  • distribution_centers.csv è piccolo e statico, solo 10 righe

  • Esempio del file raw distribution_centers.csv

Un'anteprima del file dei centri di distribuzione con tre righe di dati e 4 colonne. I campi sono id, name, latitude e longitude.

  • id: Identificatore univoco del centro di distribuzione
  • name: Nome del centro di distribuzione
  • latitude: Latitudine del centro di distribuzione
  • longitude: Longitudine del centro di distribuzione
Case Study: creazione di modelli di dati E‑Commerce con dbt

Conosci i dati: ordini

orders.csv è grande e si aggiorna continuamente: 125.000 righe e 9 colonne

  • order_id: ID univoco per ogni riga ordine
  • user_id: ID dell'utente che ha effettuato l'ordine
  • status: Stato dell'ordine
  • gender: Genere dell'utente
  • created_at: Timestamp creazione ordine
  • returned_at: Timestamp reso ordine
  • shipped_at: Timestamp spedizione ordine
  • delivered_at: Timestamp consegna ordine
  • num_of_items: Numero di articoli per ordine
Case Study: creazione di modelli di dati E‑Commerce con dbt

Conosci i dati: ordini

Esempio del file raw orders.csv:

Un'anteprima del file degli ordini con due righe di dati e 9 colonne. I campi sono order id, user id, status, gender, created at, returned at, shipped at, delivered at e num of items.

Case Study: creazione di modelli di dati E‑Commerce con dbt

Configurare raw source e seed

File raw del centro di distribuzione:

  • Caratteristiche dati:
    • File piccolo, piatto (csv)
    • Dati a variazione lenta

File raw degli ordini:

  • Caratteristiche dati:
    • Dataset grande
    • Dati a variazione rapida
  • Metodo di caricamento dbt:
    • dbt seed
    • Carica come file una tantum
  • Metodo di caricamento dbt:
    • dbt source
    • Connettore a DuckDB
Case Study: creazione di modelli di dati E‑Commerce con dbt

Configurare raw sources e seed

dbt init genera automaticamente la struttura base:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Case Study: creazione di modelli di dati E‑Commerce con dbt

Configurare raw source e seed

Carica distribution_center come seed:

looker_ecommerce/
  macros/
  models/
    stg_looker__distribution_centers.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml

In stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Case Study: creazione di modelli di dati E‑Commerce con dbt

Configurare raw source e seed

Carica orders come source:

looker_ecommerce/
  macros/
  models/
    stg_looker__orders.sql
  seeds/
  snapshots/
  tests/
  dbt_project.yml

In stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Case Study: creazione di modelli di dati E‑Commerce con dbt

Documentare sources e modelli di staging

Per documentare le sources:

looker_ecommerce/
  macros/
  models/
    _looker__sources.yml
  seeds/
  snapshots/
  tests/
  dbt_project.yml

In _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Case Study: creazione di modelli di dati E‑Commerce con dbt

Documentare sources e modello di staging

  • Esempio di file _looker__models.yml nella stessa cartella models:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Nome e posizione dei centri di distribuzione    

  - name: stg_looker__orders
    description: Info ordine, ad es. stato ordine
Case Study: creazione di modelli di dati E‑Commerce con dbt

Sources, seed, modelli e yaml

looker_ecommerce/
  macros/
  models/
    _looker__models.yml
    _looker__sources.yml
    stg_looker__distribution_centers.sql
    stg_looker__orders.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml
Case Study: creazione di modelli di dati E‑Commerce con dbt

Ripasso: sottocomandi dbt

Carica i file csv come seed

dbt seed

Crea o aggiorna tutti i modelli del progetto

dbt run

Crea o aggiorna il modello indicato

dbt run --select model

Esegue tutti i test del progetto

dbt test 

Esegue i test per il modello indicato

dbt test --select model

Combina dbt run e dbt test in uno!

dbt build
dbt build --select model
Case Study: creazione di modelli di dati E‑Commerce con dbt

Ripasso: best practice

Struttura nomi dei modelli:

  • usa doppio underscore per separare sorgente e nome modello
  • <data_source>__<model_name>.sql

es.:

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Struttura nomi file yaml:

  • inizia con singolo underscore
  • usa doppio underscore per separare sorgente e tipo di artefatto
  • _<data_source>__<artifact_type>.yml

es.:

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Case Study: creazione di modelli di dati E‑Commerce con dbt

Ayo berlatih!

Case Study: creazione di modelli di dati E‑Commerce con dbt

Preparing Video For Download...