
データマート設計の基本
「ダッシュボードの数字が合わない」「抽出が遅くて意思決定が翌日になる」。多くの現場で起きているこの悩みは、ETLやBIの前にある“データマート設計”でほぼ決まります。よいデータマートは、問いに最短で答えられる形でデータを並べ、変化に耐え、運用コストを読める状態にします。
意思決定から逆算する範囲と粒度の決め方
最初の判断は「どの意思決定をどの頻度で支えるか」です。売上の即日モニタリングなのか、週次のキャンペーン評価なのかで、必要な粒度と更新SLAは変わります。業務を分解し、マートの責務を明確に切ります(欲張らない)。
粒度を固定するチェックリスト
- 行の意味は一意か(例:1行=1注文行アイテム、1行=1セッション)。
- 主キーは安定して取得できるか(自然キーで衝突しないか、サロゲートキーの発行要否)。
- 時間の扱いは整っているか(イベント時刻/会計日/集計日を別カラムで保持)。
- キャンセル・返金・後修正をどう反映するか(差分反映/スナップショット)。
ファクトの型と選び方
ファクトは「取引系(注文・請求)」「イベント系(クリック・表示)」「スナップショット系(在庫・会員状態)」の3型が基本です。問いが「いくら売れたか」なら取引、「どの導線が効いたか」ならイベント、「何人が有料会員か」ならスナップショットを主に据えます。混在させると粒度が壊れやすいので、マートは型ごとに分けて連携します。
スキーマ実務:スター型で始め、運用まで組み込む
最初はスター・スキーマが無難です。事実テーブル(ファクト)を中心に、顧客・商品・チャネルなどのディメンションをぶら下げます。スノーフレーク化は結合数が増えて遅くなりやすく、再利用の見込みが立ってからで十分です。
ディメンション設計とSCD
- ディメンションは説明の軸。冗長でも使いやすさ優先(カテゴリ名や表示用名は複製して持つ)。
- 履歴はSCD2(有効開始/終了)を基本、最新のみが要る軸はSCD1で上書き。
- 高カーディナリティ(例:検索クエリ)はディメンション化せずファクト側に属性で持つ判断も有効。
更新・コスト・品質の運用を設計段階で
- 更新方式:増分ロードが原則。イベント時刻でパーティション、主キーでマージ。
- SLA:遅延許容(例:D+0 07:00まで)を明文化し、重要指標は中間集計をマテリアライズ。
- テスト:行数の増分、主キー一意、NULL禁止、参照整合、フレッシュネスを自動チェック。
- パフォーマンス:パーティション/クラスタリング列はクエリのWHEREに合わせる。過去期間は週次サマリに落とす。
メトリクス定義とカタログ化:数字の争いをなくす
同じデータでも「売上」と「純売上」が混在すると現場は止まります。計算ロジックをSQLで一意に定義し、同じ関数/ビューを全ダッシュボードから使い回す「メトリクス層」を用意します。命名はビジネス寄りに、技術的補足は説明文へ逃がします。
KPI辞書の最低限テンプレ
- 指標名/ビジネス定義(誰に説明しても同じ意味になる文章)
- 計算式(擬似SQL)、除外条件、粒度、基準日
- 関連ディメンション(切り口)、バージョン、担当
説明文の草案づくりやSQLの雛形整理にはChatGPTやClaudeが役立ちます。レビュー観点の洗い出しや異常検知ルールの発想補助にはGeminiも良い相棒です。実装側ではCopilotでスクリプトの補完効率を上げつつ、最終的な定義は人が責任を持って確定させます。
身近な企業活用例:中堅小売ECの失敗と改善
部門ごとにマートを個別作成し、マーケはセッション粒度、営業は注文粒度で「売上」を定義。月次会議で数字が毎回ズレ、広告停止の判断が常に1週間遅れていました。クエリはフルスキャンでコストも肥大。
改善では「注文行ファクト」を中心に再設計。1行=1注文アイテム、主キーはorder_id+line_no。ディメンションは顧客(SCD2で会員ランク履歴)、商品(カテゴリSCD1)、チャネル(キャンペーンID含む)を整理。返品は負の数量で同じファクトに記録し、純売上は「売上−返品−値引き」でメトリクス定義を共通化しました。イベントは別マート(セッション粒度)に分離し、チャネルIDで緩く連携。
運用はイベント時刻で日次パーティション、30日以内は時間クラスタリング。D+0 07:00更新SLA、増分マージで処理を10分以内に短縮。品質は主キー一意・フレッシュネス・参照整合を自動テスト。過去データは月次サマリをマテリアライズし、閲覧系の多くをそこに誘導。計算ロジックの説明文はChatGPTとGeminiでたたき台を作り、SQL雛形はClaudeで比較、実装はCopilot補助で統一しました。
結果、部門横断で指標が一致し、広告停止判断が2日早まって粗利が月+6%。ダッシュボードの初回表示は2.3倍高速化、クエリ費用は30%削減。現場の“数字が怖い”が“数字で動ける”に変わりました。
データマートは単なる集計置き場ではなく、意思決定のためのインターフェースです。粒度を固定し、スター型で使いやすく持ち、メトリクスを辞書化して争いを消す。運用コストと品質を設計段階で織り込む。こうして整えたマートは、データ解析プラットフォーム事業において、プロダクトと現場をつなぐ基盤として長く効きます。