dbt snapshots के साथ SCD2

इंटरमीडिएट dbt

Mike Metzger

Data Engineer

Snapshot क्या है?

  • समय के साथ किसी डेटासेट में बदलाव देखें
  • किसी ऑब्जेक्ट की अलग-अलग अवस्थाएँ दिखाएँ, जैसे
    • ऑर्डर स्टेटस
    • प्रोडक्शन स्टेट
    • शिपिंग स्टेटस

ऑर्डर

1 Photo by micheile henderson on Unsplash
इंटरमीडिएट dbt

SCD2

  • Slowly changing dimension
  • समय के साथ बदलाव ट्रैक करता है
  • dbt snapshots से SCD2 लागू करता है

बदलता डेटा

1 Photo by Luke Chesser on Unsplash
इंटरमीडिएट dbt

SCD2 उदाहरण

  • ऑर्डर स्टेटस
  • उपलब्ध अवस्थाएँ:
    • 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

dbt में SCD2

  • dbt SCD2 लागू करने के लिए snapshots का उपयोग करता है
  • बदलाव अपने-आप ट्रैक कर सकता है
  • आउटपुट में अतिरिक्त कॉलम जोड़ता है
    • 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

dbt snapshots लागू करना

  • 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

dbt snapshot

  • dbt snapshot चलाएँ
  • snapshot क्वेरी करने के लिए ref() कमांड से नया मॉडल बनाएँ
    • select * from {{ ref('snapshot_orders') }}
  • संभावित बदला डेटा देखने के लिए dbt snapshot बार-बार चलाएँ
    • ऑटोमैटिक अपडेट के लिए शेड्यूल करें
इंटरमीडिएट dbt

अभ्यास करते हैं!

इंटरमीडिएट dbt

Preparing Video For Download...