SCD2 with dbt snapshots

우상욱·2024년 3월 2일
0

DBT

목록 보기
13/16

What is a snapshot?

  • 스냅샷은 시간에 따른 데이터세트의 변화를 살펴보는 것입니다.
  • 객체의 다양한 상태와 해당 상태가 유효한 시간을 보여줍니다.
    • Order status
    • Productions tatus
    • Shipping status

SCD2


  • Slowly changing dimension
    • Type 2
    • SCD2
    • Kimball-style data warehousing
  • Track changes over time
  • 스냅샷은 dbt에서 SCD2를 구현하는데에 사용

SCD2 example


  • Order Status
  • Available Status
    • Received
    • Packed
    • Shipped

SCD2 in dbt


  • dbt uses snapshots to implements SCD2
  • Can track the changes automatically
  • Adds extra columns to the output
    • dbt_valid_from
    • dbt_valid_to


null인 경우 가장 최근의 데이터입니다.

implementing dbt snapshots


  • SQL file, snapshots/snapshot_name.sql
  • target_schema는 기존 열과 반드시 달라야합니다.
{% snapshot snapshot_orders %}
  {{ config(
       target_schema='snapshots',
       strategy = 'timestamp',
       unique_key='id',
       updated_at='last_updated'
      )
   }}
   select * from {{ source('raw', 'orders') }}
{% endsnapshot %}


## dbt snapshot
- Run `dbt snapshot`
- Create new model using the `ref()` command to query snaphost
  - `select * from {{ ref('snapshot_orders') }}
- Run `dbt snapshot` frequently to see potentailly changed data
  잠재적으로 변경된 데이터를 확인하고 유지하려면, dbt snapshot을 자주 실행해야합니다.
  - Schedule for automatic updates
  자동으로 업데이트 시키기 위해, 스케줄링하여 자동화합니다.

profile
데이터엔지니어

0개의 댓글