この記事について
- 以下の書籍の読書メモです
アジャイルデータモデリング-組織にデータ分析を広めるためのテーブル設計ガイド
スタースキーマの設計プロセス
- データプロファイリング
ソースシステムのデータでBEAM✲モデルを検証する - 1.で修正されたBEAM✲モデルにサロゲートキーを追加する
- BEAM✲とER表記を組み合わせた「拡張スタースキーマ」を作成する
- 物理データウェアハウススキーマ、データウェアハウスマトリックスを作成する
アジャイルデータプロファイリング
アジャイルデータプロファイリングとは
- 優先度の高いイベントとディメンション候補となるデータソースを特定し、データ構造、中身、品質を確認する
- テスト駆動設計の一種
手順
- 候補となるデータソースを特定する
- 以下の項目をデータプロファイリングする(SQL or 専門ツール)
- 欠損値の数
- 一意な値と頻度
- データの範囲と長さ
- データプロファイリングの結果を用いてBEAM✲モデルに注釈付与と修正を行う
- ディメンションとイベントの工数見積もり
- プランニングポーカで異なる意見を多く取り入れるようにする
- 4の結果から、スタースキーマの工数見積もりを算出する
- モデルレビュー
- スプリントプランニング
スタースキーマの設計
- ディメンショナルテーブルの作成
- カレンダーディメンションテーブルの作成
- ファクトテーブルの作成
の手順で行う。詳細は以下。
1. ディメンショナルテーブルの作成
手順
- キーの種類の特定
- キーの種類
- ビジネスキー(BK):ソースシステムのテーブルで一意な「主キー」
- サロゲートキー(SK):ディメンションテーブルの行に一意に割り当てられる整数の連番
- キーの種類
- 履歴を必要とするか否かで、列に属性を追加する
- 固定値(FV):修正のみ可能。誕生日など
- 現在値(CV):履歴が不要。所属部門など
- 履歴値(HV):履歴を保持。居住地など
- 有効開始日、有効終了日、現在の値かを列に追加
- 現在の値の場合、有効終了日はNULLにするのではなく、 ETLプロセスでDBMSがサポートする最大の値にする
サロゲートキーのメリット
- ビジネスキーの変化からデータウェアハウスを切り離せる
- 欠損値に「0」のキーをつけることで、集計が簡単になる
- ビジネスキーを匿名化でき、複合をしにくくする
- ファクトテーブルのサイズが小さくなる(ディメンションサイズの増加は小さい)
- 結合処理のパフォーマンス向上
ディメンションがどのように変化を扱うべきか
SCDタイプ1:履歴を書き換える
- CVとFVのディメンショナル属性
- 時点が変わると異なる答えが返ってくることに注意
- FV
- 履歴を書き換えるだけで実装できる
- 更新処理はただの修正
- CV
- 変更履歴があったとしても、現在の値のみを利用する
- ステークホルダーが現在の値のみと望んでいても、可能な限り履歴を保存する
SCDタイプ2:履歴を追跡する
- HVのディメンショナル属性
- 値が変更されると、新しい値を持った新しい行が挿入される
- サロゲートキーを利用する
2. カレンダーディメンションテーブルの作成
- 時間階層の適合ディメンション作成はDWHに不可欠
- 以下のように、カレンダーディメンションと時計ディメンションに分けて実装する
日付キー SK |
日付 D |
月 C |
四半期 C |
年 C |
祝日フラグ [はい/いいえ] |
---|---|---|---|---|---|
0 | - | ? | ? | ? | - |
20090101 | 2009年1月1日 | 1月 | 2009Q1 | 2009 | はい |
20090102 | 2009年1月2日 | 1月 | 2009Q1 | 2009 | いいえ |
20090201 | 2009年2月1日 | 2月 | 2009Q1 | 2009 | いいえ |
時刻キー SK |
時刻 C |
時 N |
分 N |
AMPM C |
昼夜 C |
ピークオフピーク C |
---|---|---|---|---|---|---|
0 | - | - | - | - | ? | ? |
1 | 00:00 | 0 | 0 | AM | 夜 | オフピーク |
2 | 00:01 | 0 | 1 | AM | 夜 | オフピーク |
1051 | 17:30 | 17 | 30 | PM | 昼 | ピーク |
3. ファクトテーブルの作成
- 「誰が、何を、いつ、どこで、なぜ」の詳細をディメンションの外部キーに置き換える
数量(どれくらい)と退化ディメンション(DD)の詳細はそのままにする - ファクトテーブル名を作成する
- ファクトテーブルタイプを記載する
- 離散型イベント→トランザクション・ファクトテーブル→TF
- 反復型イベント→定期スナップショット→PS
- 発展型イベント→累積スナップショット→AS
- ファクト(数値)をどんなディメンションを利用しても合計できる(完全加算型:FA)ファクトにする
- 拡張スタースキーマ図を作成する
物理スキーマの作成
作成手順
- 命名規則の作成
- データ型の作成
- プロトタイピング
- データウェアハウスマトリックスの作成
テーブルの命名規則
- ディメンション
- 単数系の名詞
- 例:CUSTOMER、PRODUCT
- ファクト
- 複数形の名詞+FACT
- 例:SALES FACT、ORDERS FACT
データウェアハウスマトリックスとは
- 物理ファクトテーブルと物理ディメンションテーブルの間の関係を文書化したもの
- イベントマトリックスをコピーし、実際の物理テーブルで表現する