はじめに
「アジャイルデータモデリング」を読んでみたのでメモ
- データウェアハウスのモデリングに関する貴重な和書(唯一?)
- 原著は2011年で古いけど、全く古さは感じない。デザインパターンのような内容なので、すぐに古くなることはなさそう。一部最近のDWHの機能や最近の用語と違う部分もありますが、訳註などで補足されている
- スタースキーマ(の変形?)によるデータモデリングのベストプラクティス集
- データエンジニア・アナリティクスエンジニアの方向け。実務で使っていると、普段の悩み事について言語化されている。課題が簡単に解決できるとは限らないけど、共通の言語・フレームワークをベースとすることで、議論の土台にしやすそう
- タイトルに「アジャイル」とあるように、段階的にデータ基盤を改善していこう、という趣旨で書かれている
- 最後に、(本編との繋がりは大きくはないですが)日本の会社のデータ基盤についての事例がのっている
1 モデリング
ディメンショナルモデリング、スタースキーマ、ファクト、ディメンション、RDBとDWHの違い、といったモデリングの概要。書籍としてまとまって読めるのは助かります。
3.5 ディメンションの履歴
業務DBと異なり、分析DWHでは時系列の履歴データの扱いが必要になるので、なるほど感。現在の値か、イベント時点の値かは悩むことが多い。最近のDWHでは、betweenでjoinしても遅くないという補足あり。
4.1 適合ディメンション(conformed dimension)
似たようなテーブルがある時、カラムの名前・意味が違うと扱いにくいので、同じカラムに統一しておくと、使い勝手や効率がよくなるという話。似ているけど微妙に違うテーブルの扱いは悩むので、なるほど感。
- スワップ可能ディメンション: 同じカラムのテーブル
- ロールアップディメンション: ドリルダウン用
- ロールプレイングディメンション: 複数の意味のカラム・テーブルとjoinできる。Railsのポリモーフィックっぽい?
4.1.3 イベントマトリックス
この書籍の"BEAM"モデリング手法の肝の一つが「イベントマトリックス」
イベントと属性でテーブルを作り、どのイベントがどの属性を持つかの一覧表を作ることで全体像を把握する。モデリングのブレーンストーミングによさそう。
5.1 データプロファイリング
データの特徴を把握しましょう、という話。
- 欠損値 (非NULL制約?)
- 一意な値と頻度 (unique制約,カーディナリティ?)
- データの範囲と長さ
一意と思ったカラムが、実は一意でなかった、、、NULLでないと思ったら過去の経緯でNULLだった、、、などはよくあるので、この辺見たいところ。
実際にどう運用するかは考え所ですが、シンプルにinformation_schemaなどを使ってSQLでプロファイルしてもいい、という話。
8.3 発展型イベント
イベントの種類を以下の3種類に分類している。
- 離散型: 1回だけ
- 発展型: 複数の関連するイベント。アクセスログの同一セッションのような感じ? 訪問=>サインアップ=>購入、のような?
- 反復型: サブスクリプションのような繰り替えし?
発展型のように連続するイベントの扱いは悩むことがあるので、参考になります。アクセスログのセッションや、ファネルに近いイメージと思いました。
累積スナップショットとして開発、、、とありますが、ここはいまいちイメージがわかず。強引にSQLで処理してしまうことが多そう。。。
8.5にファクトに複数の関連するディメンションをjoinすることがある場合、「派生ファクトテーブル」を作っておくとあるのは、今悩んでいるところだったので、なるほど感。(といっても手法はいまいちわからず、普通にjoinしたテーブルを事前に作っておくのでよさそう?)
まとめ
とりあえず、ぱっと見たところを書いてみました。モデリングに関する書籍は読んだことがなかったので、体系的に言語化されてまとまっているこの書籍はとてもありがたいです。