2010年6月11日金曜日

FactデータをTransactionとCurrentのDimension情報で見たい場合の設計方法

Factデータをデータが発生した当時のDimension情報と現在の最新データの両方が見たいばあいがあります。
たとえば、当時の住んでいた都道府県と現在の都道府県の両方で見たい場合など。。。
Dimensionの更新の扱いについてはSCD(Slowly Changing Dimension)というテクニックがあるのですが、
そのType3またはType6を利用するとTransactionとCurrentの情報を見ることができるのですが、
DimensionにType1とType3が混ざっているとややこしいので、実際は必要な項目だけType1とType3の両方のDimensionを作成して
対応しています。
たとえば、都道府県の例でいえば、Factテーブルに発生した時点の都道府県Dimensonのキーを入れておきます。
これでデータ発生した際の都道府県のデータは分かります。
現在の最新の都道府県のデータはCustomer dimensionに入れておき、FactテーブルにはCustomer keyを入れておきます。
そうすれば、Customerから最新の都道府県が参照できます。

多少ETLの処理が複雑になってしまいますが、パフォーマンス的には問題ないと思います。

0 件のコメント:

コメントを投稿