dbt snapshot'larıyla SCD2

Orta Düzey dbt

Mike Metzger

Data Engineer

Snapshot nedir?

  • Zaman içinde bir veri kümesindeki değişimlere bakış
  • Bir nesnenin farklı durumlarını gösterir, örneğin
    • Sipariş durumu
    • Üretim durumu
    • Kargo durumu

Sipariş

1 Unsplash'ta micheile henderson'ın fotoğrafı
Orta Düzey dbt

SCD2

  • Yavaş değişen boyut
  • Zaman içindeki değişimleri izler
  • dbt, SCD2'yi snapshot'larla uygular

Değişen veriler

1 Unsplash'ta Luke Chesser'ın fotoğrafı
Orta Düzey dbt

SCD2 örneği

  • Sipariş durumu
  • Olası durumlar:
    • Received
    • Packed
    • Shipped
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
Orta Düzey dbt

dbt'de SCD2

  • dbt, SCD2 için snapshot kullanır
  • Değişimleri otomatik izleyebilir
  • Çıktıya ek sütunlar ekler
    • 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
Orta Düzey dbt

dbt snapshot'larını uygulama

  • SQL dosyası, 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 %}
Orta Düzey dbt

dbt snapshot

  • dbt snapshot çalıştır
  • Snapshot'ı sorgulamak için ref() komutuyla yeni model oluştur
    • select * from {{ ref('snapshot_orders') }}
  • Olası değişiklikleri görmek için dbt snapshot'ı sık çalıştır
    • Otomatik güncellemeler için zamanla
Orta Düzey dbt

Hadi pratik yapalım!

Orta Düzey dbt

Preparing Video For Download...