【えすしーでぃー】

SCD(緩やかに変化するディメンション) とは?

公開:
💡 今の属性と、当時の属性をどう残すか決める

データウェアハウスで、顧客の住所など変化する属性をどう保存するかという設計。上書きする方法や、別の行を追加して当時の属性を残す方法がある。

📌 このページのポイント
SCD:当時の属性を残す Type 2:顧客C01、4月1日に東京から大阪へ 代理キー101/東京 1月1日 ≤ 日時 < 4月1日 3月の売上はこちら 代理キー102/大阪 4月1日 ≤ 日時 5月の売上はこちら 同じ顧客IDを残し、版ごとのキーで事実と結ぶ 開始を含み終了を含まない期間の例。境界を二重に含めない
今の属性と、当時の属性をどう残すか決める
ひよこ ひよこ
顧客の住所が変わると、分析にも影響するの?
ペンギン先生 ペンギン先生
するよ。顧客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は「緩やかに変化するディメンション」という意味の表現だよ。

参考資料

← 用語集にもどる