Konfigurera dbt-projektet och läsa in data

Fallstudie: Bygg e-handelsdatamodeller med dbt

Susan Sun

Freelance Data Scientist

Repetition: dbt-installation och initiering

Installera dbt

pip install dbt

Initiera dbt-projektet looker_ecommerce

dbt init looker_ecommerce

Verifiera att installationen lyckades

cd looker_ecommerce
dbt debug

Filkatalog autogenererad av dbt:

En upprepning av skärmdumpen från föregående lektion. Den visar en serie filkataloger autogenererade av dbt init. Mappen på översta nivån heter looker e-commerce. Undermappar heter analyses, macros, models, seeds, snapshots och tests. Det finns även tre övriga filer: gitignore, dbt project yaml och en readme markdown.

Fallstudie: Bygg e-handelsdatamodeller med dbt

Bekanta dig med data: distributionscenter

  • distribution_centers.csv är liten och statisk, med bara 10 rader

  • Ett urval av rådata från distribution_centers.csv

En förhandsgranskning av datafilen för distributionscenter med tre datarader och 4 kolumner. Kolumnnamnen är id, name, latitude och longitude.

  • id: Unikt ID för varje distributionscenter
  • name: Namn på distributionscentret
  • latitude: Latitudkoordinat för distributionscentret
  • longitude: Longitudkoordinat för distributionscentret
Fallstudie: Bygg e-handelsdatamodeller med dbt

Bekanta dig med data: ordrar

orders.csv är stor och uppdateras löpande, med 125 000 rader och 9 kolumner

  • order_id: Unikt ID för varje orderrad
  • user_id: ID för användaren som lade ordern
  • status: Orderstatus
  • gender: Användarens kön
  • created_at: Tidsstämpel när ordern skapades
  • returned_at: Tidsstämpel när ordern returnerades
  • shipped_at: Tidsstämpel när ordern skickades
  • delivered_at: Tidsstämpel när ordern levererades
  • num_of_items: Antal artiklar i varje order
Fallstudie: Bygg e-handelsdatamodeller med dbt

Bekanta dig med data: ordrar

Ett urval av rådata från orders.csv:

En förhandsgranskning av orderdatafilen med två datarader och 9 kolumner. Kolumnnamnen är order id, user id, status, gender, created at, returned at, shipped at, delivered at och num of items.

Fallstudie: Bygg e-handelsdatamodeller med dbt

Konfigurera råkällor och seed-datakällor

Distributionscenter – rådata:

  • Dataegenskaper:
    • Liten, platt fil (csv)
    • Långsamt föränderliga data

Ordrar – rådata:

  • Dataegenskaper:
    • Stor datamängd
    • Snabbt föränderliga data
  • dbt-inläsningsmetod:
    • dbt seed
    • Läs in som en engångsfil
  • dbt-inläsningsmetod:
    • dbt source
    • Koppling till DuckDB
Fallstudie: Bygg e-handelsdatamodeller med dbt

Konfigurera råkällor och seed-datakällor

dbt init autogenererar den grundläggande filstrukturen:

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Fallstudie: Bygg e-handelsdatamodeller med dbt

Konfigurera råkällor och seed-datakällor

Läs in distribution_center som seed:

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

I stg_looker__distribution_centers.sql:

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Fallstudie: Bygg e-handelsdatamodeller med dbt

Konfigurera råkällor och seed-datakällor

Läs in orders som source:

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

I stg_looker__orders.sql:

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Fallstudie: Bygg e-handelsdatamodeller med dbt

Dokumentera källor och stagingmodeller

Dokumentera sources:

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

I _looker__sources.yml:

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Fallstudie: Bygg e-handelsdatamodeller med dbt

Dokumentera källor och stagingmodell

  • Exempelfil _looker__models.yml i samma models-katalog:
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
Fallstudie: Bygg e-handelsdatamodeller med dbt

Källor, seeds, modeller och 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
Fallstudie: Bygg e-handelsdatamodeller med dbt

Repetition: dbt-delkommandon

Läser in csv-filer som seed-filer

dbt seed

Skapar eller uppdaterar alla modeller i dbt-projektet

dbt run

Skapar eller uppdaterar den angivna modellen

dbt run --select model

Kör alla tester i dbt-projektet

dbt test 

Kör tester för den angivna modellen

dbt test --select model

Kombinerar dbt run och dbt test i ett!

dbt build
dbt build --select model
Fallstudie: Bygg e-handelsdatamodeller med dbt

Repetition: riktlinjer för bästa praxis

Namnstruktur för modeller:

  • använder dubbelt understreck för att skilja datakällans namn från modellnamnet
  • <data_source>__<model_name>.sql

t.ex.

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Namnstruktur för yaml-filer:

  • börjar med ett enkelt understreck
  • använder dubbelt understreck för att skilja datakällans namn från artefaktnamnet
  • _<data_source>__<artifact_type>.yml

t.ex.

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Fallstudie: Bygg e-handelsdatamodeller med dbt

Nu kör vi en övning!

Fallstudie: Bygg e-handelsdatamodeller med dbt

Preparing Video For Download...