SCD2 s dbt snapshots

Intermediate dbt

Mike Metzger

Data Engineer

Co je snapshot?

  • Pohled na změny datové sady v čase
  • Zachycuje různé stavy objektu, například
    • Stav objednávky
    • Stav výroby
    • Stav doručení

Objednávka

1 Photo by micheile henderson on Unsplash
Intermediate dbt

SCD2

  • Pomalu se měnící dimenze
  • Sleduje změny v čase
  • dbt implementuje SCD2 pomocí snapshots

Měnící se data

1 Photo by Luke Chesser on Unsplash
Intermediate dbt

Příklad SCD2

  • Stav objednávky
  • Dostupné stavy:
    • Přijato
    • Zabaleno
    • Odesláno
id order_status last_updated
1 Shipped 2023-07-01 11:30
id order_status last_updated
1 Received 2023-07-01 10:45
1 Packed 2023-07-01 11:15
1 Shipped 2023-07-01 11:30
Intermediate dbt

SCD2 v dbt

  • dbt používá snapshots pro implementaci SCD2
  • Dokáže automaticky sledovat změny
  • Přidává do výstupu další sloupce
    • dbt_valid_from
    • dbt_valid_to
id order_status last_updated dbt_valid_from dbt_valid_to
1 Received 2023-07-01 10:45 2023-07-01 10:45 2023-07-01 11:15
1 Packed 2023-07-01 11:15 2023-07-01 11:15 2023-07-01 11:30
1 Shipped 2023-07-01 11:30 2023-07-01 11:30 null
Intermediate dbt

Implementace dbt snapshots

  • Soubor SQL, snapshots/snapshot_name.sql
{% snapshot snapshot_orders %}

{{ config(
target_schema='snapshots',
strategy='timestamp',
unique_key='id',
updated_at='last_updated'
) }}
select * from {{ source('raw', 'orders') }}
{% endsnapshot %}
Intermediate dbt

dbt snapshot

  • Spusťte dbt snapshot
  • Vytvořte nový model pomocí příkazu ref() pro dotaz na snapshot
    • select * from {{ ref('snapshot_orders') }}
  • Spouštějte dbt snapshot pravidelně pro zachycení změn dat
    • Naplánujte automatické aktualizace
Intermediate dbt

Pojďme si procvičit!

Intermediate dbt

Preparing Video For Download...