SCD2 зі знімками в dbt

Середній рівень dbt

Mike Metzger

Data Engineer

Що таке знімок?

  • Перегляд змін набору даних у часі
  • Ілюструє різні стани об'єкта, як-от
    • Статус замовлення
    • Стан виробництва
    • Статус доставки

Замовлення

1 Фото: micheile henderson на Unsplash
Середній рівень dbt

SCD2

  • Повільно змінний вимір
  • Відстежує зміни з часом
  • dbt реалізує SCD2 за допомогою знімків

Зміни даних

1 Фото: Luke Chesser на 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

SCD2 у dbt

  • dbt використовує знімки для реалізації SCD2
  • Може автоматично відстежувати зміни
  • Додає додаткові стовпці у вихідні дані
    • 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

  • Файл 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
  • Створіть нову модель з командою ref() для запиту до знімка
    • select * from {{ ref('snapshot_orders') }}
  • Регулярно запускайте dbt snapshot, щоб бачити можливі зміни даних
    • Налаштуйте розклад для автоматичних оновлень
Середній рівень dbt

Давайте потренуємось!

Середній рівень dbt

Preparing Video For Download...