Configurarea proiectului dbt și încărcarea datelor

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Susan Sun

Freelance Data Scientist

Recapitulare: configurarea și inițializarea dbt

Instalați dbt

pip install dbt

Inițializați proiectul dbt looker_ecommerce

dbt init looker_ecommerce

Verificați configurarea

cd looker_ecommerce
dbt debug

Directorul de fișiere generat automat de dbt:

Captură de ecran din lecția anterioară cu structura de directoare generată de dbt init. Folderul de nivel superior se numește looker e-commerce. Subdirectoarele sunt analyses, macros, models, seeds, snapshots și tests. Există și trei fișiere: gitignore, dbt project yaml și readme markdown.

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Familiarizarea cu datele: centre de distribuție

  • distribution_centers.csv este mic și static, cu doar 10 rânduri

  • Un exemplu din fișierul brut distribution_centers.csv

Previzualizare a fișierului de date despre centrele de distribuție, cu trei rânduri de date și 4 coloane. Numele coloanelor sunt id, name, latitude și longitude.

  • id: Identificator unic al centrului de distribuție
  • name: Numele centrului de distribuție
  • latitude: Coordonata de latitudine a centrului de distribuție
  • longitude: Coordonata de longitudine a centrului de distribuție
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Familiarizarea cu datele: comenzi

orders.csv este mare și se actualizează continuu, cu 125.000 de rânduri și 9 coloane

  • order_id: ID unic al fiecărei comenzi
  • user_id: ID-ul utilizatorului care a plasat comanda
  • status: Statusul comenzii
  • gender: Genul utilizatorului
  • created_at: Marca de timp a creării comenzii
  • returned_at: Marca de timp a returnării comenzii
  • shipped_at: Marca de timp a expedierii comenzii
  • delivered_at: Marca de timp a livrării comenzii
  • num_of_items: Numărul de articole din comandă
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Familiarizarea cu datele: comenzi

Un exemplu din fișierul brut orders.csv:

Previzualizare a fișierului de date despre comenzi, cu două rânduri de date și 9 coloane. Numele coloanelor sunt order id, user id, status, gender, created at, returned at, shipped at, delivered at și num of items.

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Configurarea surselor brute și a datelor seed

Fișier de date brute centru de distribuție:

  • Caracteristici:
    • Fișier mic, plat (csv)
    • Date cu modificări rare

Fișier de date brute comenzi:

  • Caracteristici:
    • Set de date mare
    • Date cu modificări frecvente
  • Metodă de încărcare dbt:
    • dbt seed
    • Încărcat ca fișier unic
  • Metodă de încărcare dbt:
    • dbt source
    • Conector la DuckDB
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Configurarea surselor brute și a datelor seed

dbt init generează automat structura de fișiere:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Configurarea surselor brute și a datelor seed

Încărcați distribution_center ca seed:

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

În stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Configurarea surselor brute și a datelor seed

Încărcați orders ca source:

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

În stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Documentarea surselor și a modelelor de stadializare

Pentru a documenta sources:

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

În _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Documentarea surselor și a modelului de stadializare

  • Exemplu de fișier _looker__models.yml în același director models:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Distribution center name and location    

  - name: stg_looker__orders
    description: Order information such as order status
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Surse, seed-uri, modele și 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
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Recapitulare: subcomenzile dbt

Încarcă fișierele csv ca seed-uri

dbt seed

Creează sau actualizează toate modelele din proiectul dbt

dbt run

Creează sau actualizează modelul specificat

dbt run --select model

Rulează toate testele din proiectul dbt

dbt test 

Rulează testele pentru modelul specificat

dbt test --select model

Combină dbt run și dbt test într-un singur pas!

dbt build
dbt build --select model
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Recapitulare: ghiduri de bune practici

Structura de denumire a modelelor:

  • folosește dublu underscore pentru a separa numele sursei de numele modelului
  • <data_source>__<model_name>.sql

Ex.

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Structura de denumire a fișierelor yaml:

  • începe cu un singur underscore
  • folosește dublu underscore pentru a separa numele sursei de tipul artefactului
  • _<data_source>__<artifact_type>.yml

Ex.

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Să exersăm!

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Preparing Video For Download...