Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ディメンショナルモデリングのすすめ
Search
Ojima Hikaru
July 27, 2018
Technology
8
4.7k
ディメンショナルモデリングのすすめ
Developer Summit 2018 Summer
Ojima Hikaru
July 27, 2018
Tweet
Share
More Decks by Ojima Hikaru
See All by Ojima Hikaru
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
ojima_h
1
200
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
5
610
Podのオートスケーリングに苦戦し続けている話
ojima_h
1
330
モンスターストライクを支えるデータ分析基盤と準リアルタイム集計
ojima_h
7
5.7k
データ分析基盤の変遷とデータレイクの作り方
ojima_h
2
1.9k
Other Decks in Technology
See All in Technology
ソフトウェア開発プロジェクトでの品質管理への提案(温故知新)
yohwada
0
100
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
230
20250728 MCP, A2A and Multi-Agents in the future
yoshidashingo
1
210
AIエージェントを現場で使う / 2025.08.07 著者陣に聞く!現場で活用するためのAIエージェント実践入門(Findyランチセッション)
smiyawaki0820
5
450
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
860
「育てる」サーバーレス 〜チーム開発研修で学んだ、小さく始めて大きく拡張するAWS設計〜
yu_kod
1
250
金融サービスにおける高速な価値提供とAIの役割 #BetAIDay
layerx
PRO
1
720
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
340
大規模イベントに向けた ABEMA アーキテクチャの遍歴 ~ Platform Strategy 詳細解説 ~
nagapad
0
180
AI コードレビューが面倒すぎるのでテスト駆動開発で解決しようとして読んだら、根本的に俺の勘違いだった
mutsumix
0
160
AI人生苦節10年で会得したAIがやること_人間がやること.pdf
shibuiwilliam
1
270
Vision Language Modelと自動運転AIの最前線_20250730
yuyamaguchi
3
1.1k
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Code Review Best Practice
trishagee
69
19k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Java REST API Framework Comparison - PWX 2021
mraible
32
8.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
GraphQLとの向き合い方2022年版
quramy
49
14k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Transcript
©XFLAG ディメンショナル モデリングの勧め
©XFLAG About Me 生島 光 株式会社ミクシィ XFLAG スタジオ 解析グループ データ分析基盤の開発・運用
GitHub: ojima-h Twitter: @ojima_h Facebook: hikaru.ojima
©XFLAG © XFLAG
©XFLAG 今日話すこと 使いやすいデータウェアハウス を手に入れるために ディメンショナル・モデリング を取り入れてみたお話
©XFLAG Why Dimensional Modeling?
©XFLAG BEFORE DB App Redshift APIログ 抽出 そのまま 分析チーム 依頼
作業待ち
©XFLAG BEFORE DB App Redshift APIログ 抽出 そのまま 分析チーム Zeppelin
©XFLAG ステージのクリア数を数え たいんだけど それなら striker_stages っていうテーブルの state が 2 になってる行を数え
ればいいですよ なにそれ意味わかんない state の詳しい説明は サーバーの仕様書に書い てありますよ
©XFLAG PROBLEM • 仕様書を読まないと分析できない
©XFLAG ステージのカテゴリごとの プレイ数を数えたいんだ けど それなら stage_flag って いうカラムの 1ビット目を見たらわかり ますよ
なにそれ意味わかんない 詳しいことは サーバーのコード読めば わかるんですけどね
©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない
©XFLAG マルチプレイ数を数えたい んだけど それなら striker_stages テーブルを使えばいい ですね。 このテーブルは自己参 照テーブルになっている のでこのカラムで
Group By して自分自身 に結合クァwせdrftgyふ じこlp; ・・・
©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 複雑なテーブル構造
©XFLAG キャンペーン施策のROI の算出に必要な値が欲し い 結構大変そうなので、ク エリのテンプレート作って 後で調整できるようにして おきますね
©XFLAG 300行くらいの SQL
©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 複雑なテーブル構造 • 長すぎる
SQL
©XFLAG そうだ! サマリテーブルを作ろう!
©XFLAG 〇〇っていう分析がしたい わかりましたサマリテーブ ル作ります △△っていう分析がしたい この前作ったサマリテー ブルは使えなさそうです ね。 わかりましたサマリテーブ ル作ります
〜〜っていう分析がしたい この前作ったサマリテーブ ルは使えな(以下略
©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 複雑なテーブル構造 • 長すぎる
SQL • 乱立する謎のサマリデータ
©XFLAG BI ツールは 助けてくれない
©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 長すぎる SQL •
複雑なテーブル構造 • 乱立する謎のサマリデータ Dimensional Modeling が 解決してくれるかも
©XFLAG Introduction to Dimensional Modeling
©XFLAG データ分析の流れ ETL 整形 ロード 要件定義 目的 分析手法 ゴール データ収集
サーバーログ DB 分析 Σ 自動化 Data Warehouse Data Lake
©XFLAG Data Warehouse ◦ すぐに分析に取りかかれるデータ ◦ どんな分析にも使える柔軟性 業務用データベースとは求められるも のが違う (e.g.
正規化 )
©XFLAG Dimensional Modeling Data Warehouse の要件に合わせたテーブル設計
©XFLAG Dimensional Modeling is... ◦ Ralph Kimball さんが 20年以上前に提唱した DWH
の設計手法
©XFLAG FACT DIMENSIONS DIMENSIONS DIMENSIONS DIMENSIONS イベント 状態 e.g. ゲームのプレイログ
FACTに対する 説明 e.g プレイした ステージに関する情報 DIMENSIONS Star Schema
©XFLAG 現実世界 FACT DIMENSIONS DIMENSIONS DIMENSIONS DIMENSIONS Dimensional Modeling
©XFLAG 設計の手順
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4
Steps
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4
Steps
©XFLAG ビジネスプロセス = お客さんに提供しているサービス・機能(仮) 例)「ゲームをプレイする」 ◦ ビジネスプロセスの内容を言語化 ◦ 使えるデータを確認
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4
Steps
©XFLAG 粒度 対象のビジネスプロセスをどこまで詳細 なレベルで分析するのか ビジネスの言葉で表現 イベント ファクトテーブルの1行 ?
©XFLAG 粒度の例 1人のユーザーが 1回ゲームをプレイした
©XFLAG 粒度の例 マルチプレイの場合 vs. 3レコード ユーザー に関する分析 1レコード ゲームプレイ に関する分析
©XFLAG 粒度 粒度の決め方によって 分析できる事柄も、その後の設計も 全然変わってくる
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4
Steps
©XFLAG Dimensions WHEN WHERE WHO WHAT WHY HOW about Facts
ビジネスの 言葉で
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4
Steps
©XFLAG Facts イベントに対する計測値 e.g. ◦ ゲームのクリア時間 ◦ ゲームのスコア ◦ 購入した商品の値段
足したり掛けたりできるもの
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4
Steps
©XFLAG メリット
©XFLAG Good Points ◦ クエリのパフォーマンスが向上 ◦ JOIN が少なくなるため ◦ 分析軸を柔軟に追加できる
◦ Dimension テーブルを好きなだけ拡張 ◦ データを理解しやすい ◦ ビジネスプロセスを反映したテーブル設計
©XFLAG ディメンションテーブルが充実 分析がパワーアップ
©XFLAG Good Points ◦ クエリのパフォーマンスが向上 ◦ JOIN が少なくなるため ◦ 分析軸を柔軟に追加できる
◦ Dimension テーブルを好きなだけ拡張 ◦ データを理解しやすい ◦ ビジネスプロセスを反映したテーブル設計
©XFLAG データの理解 業務システム システムの実装を表現 データウェアハウス ビジネスプロセスを表現 ステージ ステージ グループ 1
N ステージ 非正規化 ゲーム開始 ゲーム終了 LEFT JOIN ゲームプレイ
©XFLAG やってみた
©XFLAG 課題 ◦ データを理解するのが難しい ◦ 汎用的のないサマリテーブルたち
©XFLAG 作戦 できるところからちょっとずつ 重要なビジネスプロセスから順番に着手していっ た
©XFLAG 大事だったこと ビジネスプロセスの分析や 粒度をきちんと決めたこと Data Warehouse 全体の整合性を保つ ことができた
©XFLAG (参考) ◦ Enterprise Bus Matrix ◦ Confirmed Dimensions
©XFLAG 結果 ◦ シンプルなテーブル構造 ◦ 汎用的なサマリテーブル ◦ セルフサービスなデータ分析
©XFLAG 体感では ½ 〜 ⅓ くらい
©XFLAG 結果 ◦ シンプルなテーブル構造 ◦ 汎用的なサマリテーブル ◦ セルフサービスなデータ分析
©XFLAG つらかったこと
©XFLAG つらかったこと ◦ 設計するの大変 ◦ 時間がかかりすぎるリスク ⇒ 設計コストと得られるメリットの比較 生データとの併用も
©XFLAG つらかったこと ◦ Hive や Redshift などでは難しい部分も ◦ データ更新 ◦
実行効率 ⇒ 妥協も大事
©XFLAG 美味しいところだけ いただくの精神
©XFLAG https://www.amazon.co.jp/dp/B00DRZX6XS 参考
©XFLAG テーブル設計は基礎体力 日々の分析業務や 機械学習プロジェクトを 加速させる
©XFLAG Thank You
©XFLAG Credits Special thanks to all the people who made
and released these awesome resources for free: ◦ Icon made by Freepik from flaticon ◦ Photographs by Unsplash