前回からの続きをメモ。
前回の記事:
The Data Warehouse Toolkit を読む #2: Retail Sales
在庫管理におけるディメンショナル・モデルだとファクトテーブルの構成方法は3種類ある。
Inventory Periodic Snapshot
ベーシックな方法だとこれ。
日別に在庫数のスナップショットを記録する方法。

Inventory Periodic Snapshot Fact の例
Inventory Transactions
こちらはトランザクション毎に記録する方法。
- 商品がベンダーから到着
- 商品の検品
- 検品が終わった商品を倉庫へ移動
- 検品に通過しなかったの商品をベンダーに返却
- 倉庫へ商品を移動
- 倉庫から商品を取り出し
- 商品の出荷
- カスタマーからの返品受け付け
- 返品商品を倉庫に戻す
などなどのトランザクション毎に一行というモデル。

Inventory Transactions Fact の例
Inventory Accumulating Snapshot
最後は、アイテムのロット毎にイベントを記録・更新する方法。
複数の日付ディメンションがあり、業務フローの中で都度更新される。
上記2つはファクトテーブルが更新される事はないけど、この方法だとイベントが起きる度に更新される。

Inventory Accumulating Snapshot Fact の例
いずれもメリデメはあるので要件にあったものを選ぶべし。
Bus Matrix
ここまで小売業モデルと在庫管理モデルが出てきた。
これらのファクトに対して「日付ディメンション」や「商品ディメンション」は共通のディメンション、Conformed Dimension になる。
これら Facts x Dimensions をマトリクスにしたものが Bus Matrix になる。
という訳でディメンショナルモデルをこんな感じの表にする。

Bus Matrix の例
今回はここまで。
つづく。