【えすしーでぃー】
SCD(緩やかに変化するディメンション) とは?
公開:
💡 今の属性と、当時の属性をどう残すか決める
データウェアハウスで、顧客の住所など変化する属性をどう保存するかという設計。上書きする方法や、別の行を追加して当時の属性を残す方法がある。
📌 このページのポイント
- Type 1は属性を上書きし、その属性の変更前の値を同じ行に履歴として残さない
- Type 2は変更ごとに新しい行と代理キーを設け、有効期間などで版を管理する
- Type 2では、売上などの事実を発生時点に対応するディメンションの版へ結び付ける
- 日付の境界、遅れて届く変更、過去データの訂正をどう扱うかも設計する
顧客の住所が変わると、分析にも影響するの?
するよ。顧客C01が4月1日に東京から大阪へ移ったとしよう。3月の売上を当時の地域で集計したいのか、現在の地域で集計したいのかで、必要な住所の保存方法が違うんだ。
新しい住所に上書きするだけではだめなの?
現在の住所だけ必要なら、Type 1という上書き方式でよい場合があるよ。ただし、その列だけでは昔の住所が分からなくなる。誤字訂正のように過去の誤りも直したい変更と、実際の引っ越しは分けて考えよう。
昔の住所も残すには?
Type 2では、同じ顧客でも版ごとに別の行を作るよ。東京の版に代理キー101、大阪の版に102を付け、共通の顧客IDはC01として残す。有効開始・終了や現行フラグで、どの時点の属性か管理するんだ。
4月1日はどちらの版になるの?
この例では開始を含み終了を含まない期間にする。東京は1月1日から4月1日の直前まで、大阪は4月1日からだよ。3月の売上は101、5月の売上は102へ結び付ければ、当時の地域で集計できるね。
履歴を増やせば、それで完成なのかな?
変更が遅れて届いた場合や、過去の情報を訂正する場合も決める必要があるよ。期間の重複や隙間を防ぎ、事実データに正しい版のキーを付けることが大切なんだ。SCDは自動で履歴が正しくなる製品名ではなく、保存方針の設計だよ。
まとめ:ざっくりこれだけ覚えればOK!
「SCD(緩やかに変化するディメンション)」は「今の属性と、当時の属性をどう残すか決める」と押さえておこう!
📖 おまけ:英語の意味
「slowly changing dimension」 = 緩やかに変化するディメンション
💬 slowly changing dimensionは「緩やかに変化するディメンション」という意味の表現だよ。