← コースに戻る
未ログインのため、この講座の進捗は記録されません。ログインすると記録が残るようになります。
seedsとsnapshots
seedとsnapshotは、通常のモデル(SELECT文)とは異なる形でデータを扱うdbtの機能。
| seed | snapshot | |
|---|---|---|
| 何をするか | seeds/ディレクトリに置いたCSVファイルをdbt seedコマンドでテーブルとして読み込む | mutableなソーステーブルの状態を時系列で記録する(SCD Type 2) |
| 向いている用途 | 国コードと国名の対応表、除外するテストメールアドレス一覧など、頻繁には変わらない小さな静的データ | 「いつからいつまでその値だったか」を後から追跡したい変化するデータ |
| 向かない用途 | エクスポートした生データや個人情報の読み込み | - |
| 実行コマンド | dbt seed | dbt snapshot(記録には定期的な実行が必要) |
snapshotはSCD Type 2(Slowly Changing Dimension Type 2)という手法で、「いつからいつまでその値だったか」をdbt_valid_from・dbt_valid_toのような列で保持する。
snapshots:
- name: orders_snapshot
relation: ref('stg_orders')
config:
unique_key: order_id
strategy: timestamp
updated_at: updated_at
例えば注文のstatusがpendingからshippedに変わったとき、ソーステーブルには最新のshippedしか残らないが、snapshotを取っておけば「いつpendingからshippedに変わったか」を後から追跡できる。