Marts en snapshotmodellen in dbt bouwen

Casestudy: e-commercedatamodellen bouwen met dbt

Susan Sun

Freelance Data Scientist

dbt-datamartmodellen introduceren

Datamarts zijn schone, toegankelijke datamodellen aan het einde van de pipeline.

Use-cases

  • Feature stores voor het data science-team
  • Geaggregeerde KPI’s voor finance
  • Latentiemetric voor engineering
  • Minder herhaling door SQL als code op te slaan
Casestudy: e-commercedatamodellen bouwen met dbt

Looker e-commerce-datamarts

Customers

Beantwoordt:

Wie zijn onze klanten?

Wat is hun koopgedrag?

Datagranulariteit:

Één rij per klant

Voorbeeldkolommen:

Klantnaam, bedrag dat klanten uitgaven

Products

Beantwoordt:

Wat zijn omzet, kosten en winst?

Datagranulariteit:

Één rij per product

Voorbeeldkolommen:

Productcategorie, omzet, winst

Casestudy: e-commercedatamodellen bouwen met dbt

Looker e-commerce-datamarts

Een DAG-diagram met alle dbt-bronnen en -modellen en hun relaties. Bronnen zijn groen. Modellen en marts zijn blauw.

Casestudy: e-commercedatamodellen bouwen met dbt

Stapsgewijs bouwen

Stap 1: Verfijn SQL-logica buiten dbt, vervang daarna referenties door dbt-syntax.

Een screenshot van een voorbeeld-SQL-bestand met diverse CTE’s.

Stap 2: Bouw datatests en documentatie

Een screenshot van een voorbeeld van een dbt models YAML-bestand met tabel- en kolombeschrijvingen voor een dbt-model

Stap 3: Test de build! (bijv. dbt build)

Casestudy: e-commercedatamodellen bouwen met dbt

dbt-snapshotmodellen introduceren

Vijf orderstatussen:

Processing, Shipped, Complete, Cancelled en Returned

Gegevensvoorbeeld:

Een voorbeeld van het ordersbestand met twee rijen data en 9 kolommen. Kolomnamen: order id, user id, status, gender, created at, returned at, shipped at, delivered at en num of items.

Casestudy: e-commercedatamodellen bouwen met dbt

Orders: statuswijziging vastleggen met snapshots

  • Maak het bestand orders_snapshot.sql
{% snapshot orders_snapshot %}
{{
    config(target_schema='main',
      unique_key='order_id',
      strategy='timestamp',
      updated_at='created_at')
}}

SELECT * 
FROM 
{{source('looker_ecommerce', 'orders')}}

{% endsnapshot %}
  • Een specifiek snapshotmodel draaien
dbt snapshot -s orders_snapshot.sql
  • Alle snapshotmodellen draaien
dbt snapshot
  • Alle modellen draaien (incl. snapshots)
dbt build
1 https://docs.getdbt.com/docs/build/snapshots
Casestudy: e-commercedatamodellen bouwen met dbt

Laten we oefenen!

Casestudy: e-commercedatamodellen bouwen met dbt

Preparing Video For Download...