Het dbt-project opzetten en data laden

Casestudy: e-commercedatamodellen bouwen met dbt

Susan Sun

Freelance Data Scientist

Herhaling: dbt set-up en initialisatie

Installeer dbt

pip install dbt

Initialiseer dbt-project looker_ecommerce

dbt init looker_ecommerce

Controleer of alles werkt

cd looker_ecommerce
dbt debug

Door dbt gegenereerde mapstructuur:

Een herhaling van de screenshot uit de vorige les. Het toont mappen die door dbt init zijn gegenereerd. Hoofdmappen: analyses, macros, models, seeds, snapshots en tests. Er zijn ook drie losse bestanden: gitignore, dbt project yaml en een readme markdown.

Casestudy: e-commercedatamodellen bouwen met dbt

Maak kennis met de data: distributiecentra

  • distribution_centers.csv is klein en statisch, slechts 10 rijen

  • Voorbeeld van de ruwe distribution_centers.csv-datafile

Een voorbeeld van het distributiecentrum-bestand met drie datarijen en 4 kolommen. Kolommen: id, name, latitude en longitude.

  • id: Unieke id voor elk distributiecentrum
  • name: Naam van het distributiecentrum
  • latitude: Breedtegraad van het distributiecentrum
  • longitude: Lengtegraad van het distributiecentrum
Casestudy: e-commercedatamodellen bouwen met dbt

Maak kennis met de data: orders

orders.csv is groot en wordt voortdurend bijgewerkt: 125.000 rijen en 9 kolommen

  • order_id: Unieke id voor elk orderitem
  • user_id: Id van de gebruiker die bestelde
  • status: Status van de bestelling
  • gender: Geslacht van de gebruiker
  • created_at: Tijdstip waarop de bestelling is aangemaakt
  • returned_at: Tijdstip van retour
  • shipped_at: Tijdstip van verzending
  • delivered_at: Tijdstip van levering
  • num_of_items: Aantal items per bestelling
Casestudy: e-commercedatamodellen bouwen met dbt

Maak kennis met de data: orders

Voorbeeld van de ruwe orders.csv-datafile:

Een voorbeeld van het orders-bestand met twee datarijen en 9 kolommen. Kolommen: order id, user id, status, gender, created at, returned at, shipped at, delivered at en num of items.

Casestudy: e-commercedatamodellen bouwen met dbt

Raw sources en seed-datasources instellen

Ruwe datafile Distribution center:

  • Data-eigenschappen:
    • Klein, plat bestand (csv)
    • Langzaam veranderende data

Ruwe datafile Orders:

  • Data-eigenschappen:
    • Groot databestand
    • Snel veranderende data
  • dbt-laadmethode:
    • dbt seed
    • Eenmalig bestand laden
  • dbt-laadmethode:
    • dbt source
    • Connector naar DuckDB
Casestudy: e-commercedatamodellen bouwen met dbt

Raw sources en seed-datasources instellen

dbt init genereert automatisch de basisstructuur:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Casestudy: e-commercedatamodellen bouwen met dbt

Raw source en seed-datasources instellen

Laad distribution_center als 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')}}
Casestudy: e-commercedatamodellen bouwen met dbt

Raw source en seed-datasources instellen

Laad orders als 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')}}
Casestudy: e-commercedatamodellen bouwen met dbt

Sources en stagingmodellen documenteren

Documenteer 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
Casestudy: e-commercedatamodellen bouwen met dbt

Sources en stagingmodel documenteren

  • Voorbeeldbestand _looker__models.yml in dezelfde models-map:
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Naam en locatie van distributiecentra    

  - name: stg_looker__orders
    description: Bestelinformatie zoals bestelstatus
Casestudy: e-commercedatamodellen bouwen met dbt

Sources, seeds, modellen en 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
Casestudy: e-commercedatamodellen bouwen met dbt

Herhaling: dbt-subcommando’s

Laadt csv-bestanden als seeds

dbt seed

Maakt of werkt alle modellen bij

dbt run

Maakt of werkt het opgegeven model bij

dbt run --select model

Voert alle tests uit

dbt test 

Voert tests uit voor het opgegeven model

dbt test --select model

Combineert dbt run en dbt test in één

dbt build
dbt build --select model
Casestudy: e-commercedatamodellen bouwen met dbt

Herhaling: best practices

naamgeving models:

  • gebruikt dubbele underscore om bron en model te scheiden
  • <data_source>__<model_name>.sql

bijv.

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

naamgeving yaml-bestanden:

  • begint met één underscore
  • gebruikt dubbele underscore om bron en artifact te scheiden
  • _<data_source>__<artifact_type>.yml

bijv.

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Casestudy: e-commercedatamodellen bouwen met dbt

Laten we oefenen!

Casestudy: e-commercedatamodellen bouwen met dbt

Preparing Video For Download...