SCD2 dengan snapshot dbt

dbt Tingkat Menengah

Mike Metzger

Data Engineer

Apa itu snapshot?

  • Melihat perubahan himpunan data dari waktu ke waktu
  • Menggambarkan berbagai status suatu objek, seperti
    • Status pesanan
    • Status produksi
    • Status pengiriman

Pesanan

1 Foto oleh micheile henderson di Unsplash
dbt Tingkat Menengah

SCD2

  • Dimensi berubah lambat
  • Melacak perubahan dari waktu ke waktu
  • dbt menerapkan SCD2 dengan snapshot

Data yang berubah

1 Foto oleh Luke Chesser di Unsplash
dbt Tingkat Menengah

Contoh SCD2

  • Status pesanan
  • Status yang tersedia:
    • 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
dbt Tingkat Menengah

SCD2 di dbt

  • dbt memakai snapshot untuk menerapkan SCD2
  • Dapat melacak perubahan otomatis
  • Menambahkan kolom ekstra pada keluaran
    • 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 Tingkat Menengah

Menerapkan snapshot dbt

  • Berkas 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 Tingkat Menengah

dbt snapshot

  • Jalankan dbt snapshot
  • Buat model baru dengan perintah ref() untuk mengkueri snapshot
    • select * from {{ ref('snapshot_orders') }}
  • Sering jalankan dbt snapshot untuk melihat data yang mungkin berubah
    • Jadwalkan pembaruan otomatis
dbt Tingkat Menengah

Ayo berlatih!

dbt Tingkat Menengah

Preparing Video For Download...