SCD Type2 設計の観点のメモ

SCD Type2 設計の観点のメモです。


・変化する時間の粒度
ディメンションデータの「変化する時間の粒度」は、ファクトと一致するはず。例えば、ファクト行を特徴付ける時間列がdate型(例:伝票日付)なら、ディメンションの有効範囲もdate型で日単位のはず。同様に、ファクトがdatetime粒度であれば同じ粒度のディメンションが用意されるはず。同様に、month粒度やyear粒度などがあってもよい。
→SCD Type2を行う時間粒度によって、ディメンションは「date粒度」「month粒度」などに区別されるべき。
→変化粒度が「month粒度」や「year粒度」となるマスタデータとしては勘定科目などが挙げられる。基幹システム側での管理レベルが重要。
→変化粒度が「datetime粒度」になる場合はSlowlyの範疇ではなくなる?(→RCD、ファクトに入れる)いや、Slowlyでたまたま区切りが秒単位ということもある。


・Type1の属性とType2の属性は同居する
別にType0でも3でも4でも構わないのですが、属性ごとにTypeを区別しましょう、という普通の話です。


・late arriving fact
これはファクト側のサロゲートキーのルックアップ処理で考慮すべきことですが...


スノーフレークスキーマのType2
そのままスノーフレークスキーマで実装するのが楽。スタースキーマに変換するアイデアとしては...FULL OUTER JOIN して、有効期間が重複している行を残す(これの繰り返し)。最後にMEARGE+MEARGE OUT を行う。