SCD2 z migawkami dbt

dbt średnio zaawansowany

Mike Metzger

Data Engineer

Czym jest migawka?

  • Wgląd w zmiany zbioru danych w czasie
  • Ilustruje kolejne stany obiektu, takie jak
    • Status zamówienia
    • Stan produkcji
    • Status wysyłki

Zamówienie

1 Photo by micheile henderson on Unsplash
dbt średnio zaawansowany

SCD2

  • Wolno zmieniający się wymiar
  • Śledzi zmiany w czasie
  • dbt implementuje SCD2 za pomocą migawek

Zmieniające się dane

1 Photo by Luke Chesser on Unsplash
dbt średnio zaawansowany

Przykład SCD2

  • Status zamówienia
  • Dostępne stany:
    • Odebrano
    • Spakowano
    • Wysłano
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
dbt średnio zaawansowany

SCD2 w dbt

  • dbt używa migawek do implementacji SCD2
  • Automatycznie śledzi zmiany
  • Dodaje dodatkowe kolumny do wyniku
    • 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
dbt średnio zaawansowany

Implementacja migawek dbt

  • Plik 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 %}
dbt średnio zaawansowany

Migawka dbt

  • Uruchom dbt snapshot
  • Utwórz nowy model, używając polecenia ref() do zapytania migawki
    • select * from {{ ref('snapshot_orders') }}
  • Uruchamiaj dbt snapshot regularnie, aby wykrywać zmiany w danych
    • Zaplanuj automatyczne aktualizacje
dbt średnio zaawansowany

Czas na ćwiczenia!

dbt średnio zaawansowany

Preparing Video For Download...