データマネジメントの学校
← コースに戻る

未ログインのため、この講座の進捗は記録されません。ログインすると記録が残るようになります。

seedsとsnapshots

seedとsnapshotは、通常のモデル(SELECT文)とは異なる形でデータを扱うdbtの機能。

seedsnapshot
何をするかseeds/ディレクトリに置いたCSVファイルをdbt seedコマンドでテーブルとして読み込むmutableなソーステーブルの状態を時系列で記録する(SCD Type 2)
向いている用途国コードと国名の対応表、除外するテストメールアドレス一覧など、頻繁には変わらない小さな静的データ「いつからいつまでその値だったか」を後から追跡したい変化するデータ
向かない用途エクスポートした生データや個人情報の読み込み-
実行コマンドdbt seeddbt snapshot(記録には定期的な実行が必要)

snapshotはSCD Type 2(Slowly Changing Dimension Type 2)という手法で、「いつからいつまでその値だったか」をdbt_valid_fromdbt_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に変わったか」を後から追跡できる。