Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
©XFLAG ディメンショナル モデリングの勧め
Slide 2
Slide 2 text
©XFLAG About Me 生島 光 株式会社ミクシィ XFLAG スタジオ 解析グループ データ分析基盤の開発・運用 GitHub: ojima-h Twitter: @ojima_h Facebook: hikaru.ojima
Slide 3
Slide 3 text
©XFLAG © XFLAG
Slide 4
Slide 4 text
©XFLAG 今日話すこと 使いやすいデータウェアハウス を手に入れるために ディメンショナル・モデリング を取り入れてみたお話
Slide 5
Slide 5 text
©XFLAG Why Dimensional Modeling?
Slide 6
Slide 6 text
©XFLAG BEFORE DB App Redshift APIログ 抽出 そのまま 分析チーム 依頼 作業待ち
Slide 7
Slide 7 text
©XFLAG BEFORE DB App Redshift APIログ 抽出 そのまま 分析チーム Zeppelin
Slide 8
Slide 8 text
©XFLAG ステージのクリア数を数え たいんだけど それなら striker_stages っていうテーブルの state が 2 になってる行を数え ればいいですよ なにそれ意味わかんない state の詳しい説明は サーバーの仕様書に書い てありますよ
Slide 9
Slide 9 text
©XFLAG PROBLEM ● 仕様書を読まないと分析できない
Slide 10
Slide 10 text
©XFLAG ステージのカテゴリごとの プレイ数を数えたいんだ けど それなら stage_flag って いうカラムの 1ビット目を見たらわかり ますよ なにそれ意味わかんない 詳しいことは サーバーのコード読めば わかるんですけどね
Slide 11
Slide 11 text
©XFLAG PROBLEM ● 仕様書を読まないと分析できない ● コードを読まないと分析できない
Slide 12
Slide 12 text
©XFLAG マルチプレイ数を数えたい んだけど それなら striker_stages テーブルを使えばいい ですね。 このテーブルは自己参 照テーブルになっている のでこのカラムで Group By して自分自身 に結合クァwせdrftgyふ じこlp; ・・・
Slide 13
Slide 13 text
©XFLAG PROBLEM ● 仕様書を読まないと分析できない ● コードを読まないと分析できない ● 複雑なテーブル構造
Slide 14
Slide 14 text
©XFLAG キャンペーン施策のROI の算出に必要な値が欲し い 結構大変そうなので、ク エリのテンプレート作って 後で調整できるようにして おきますね
Slide 15
Slide 15 text
©XFLAG 300行くらいの SQL
Slide 16
Slide 16 text
©XFLAG PROBLEM ● 仕様書を読まないと分析できない ● コードを読まないと分析できない ● 複雑なテーブル構造 ● 長すぎる SQL
Slide 17
Slide 17 text
©XFLAG そうだ! サマリテーブルを作ろう!
Slide 18
Slide 18 text
©XFLAG 〇〇っていう分析がしたい わかりましたサマリテーブ ル作ります △△っていう分析がしたい この前作ったサマリテー ブルは使えなさそうです ね。 わかりましたサマリテーブ ル作ります 〜〜っていう分析がしたい この前作ったサマリテーブ ルは使えな(以下略
Slide 19
Slide 19 text
©XFLAG PROBLEM ● 仕様書を読まないと分析できない ● コードを読まないと分析できない ● 複雑なテーブル構造 ● 長すぎる SQL ● 乱立する謎のサマリデータ
Slide 20
Slide 20 text
©XFLAG BI ツールは 助けてくれない
Slide 21
Slide 21 text
©XFLAG PROBLEM ● 仕様書を読まないと分析できない ● コードを読まないと分析できない ● 長すぎる SQL ● 複雑なテーブル構造 ● 乱立する謎のサマリデータ Dimensional Modeling が 解決してくれるかも
Slide 22
Slide 22 text
©XFLAG Introduction to Dimensional Modeling
Slide 23
Slide 23 text
©XFLAG データ分析の流れ ETL 整形 ロード 要件定義 目的 分析手法 ゴール データ収集 サーバーログ DB 分析 Σ 自動化 Data Warehouse Data Lake
Slide 24
Slide 24 text
©XFLAG Data Warehouse ○ すぐに分析に取りかかれるデータ ○ どんな分析にも使える柔軟性 業務用データベースとは求められるも のが違う (e.g. 正規化 )
Slide 25
Slide 25 text
©XFLAG Dimensional Modeling Data Warehouse の要件に合わせたテーブル設計
Slide 26
Slide 26 text
©XFLAG Dimensional Modeling is... ○ Ralph Kimball さんが 20年以上前に提唱した DWH の設計手法
Slide 27
Slide 27 text
©XFLAG FACT DIMENSIONS DIMENSIONS DIMENSIONS DIMENSIONS イベント 状態 e.g. ゲームのプレイログ FACTに対する 説明 e.g プレイした ステージに関する情報 DIMENSIONS Star Schema
Slide 28
Slide 28 text
©XFLAG 現実世界 FACT DIMENSIONS DIMENSIONS DIMENSIONS DIMENSIONS Dimensional Modeling
Slide 29
Slide 29 text
©XFLAG 設計の手順
Slide 30
Slide 30 text
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4 Steps
Slide 31
Slide 31 text
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4 Steps
Slide 32
Slide 32 text
©XFLAG ビジネスプロセス = お客さんに提供しているサービス・機能(仮) 例)「ゲームをプレイする」 ○ ビジネスプロセスの内容を言語化 ○ 使えるデータを確認
Slide 33
Slide 33 text
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4 Steps
Slide 34
Slide 34 text
©XFLAG 粒度 対象のビジネスプロセスをどこまで詳細 なレベルで分析するのか ビジネスの言葉で表現 イベント ファクトテーブルの1行 ?
Slide 35
Slide 35 text
©XFLAG 粒度の例 1人のユーザーが 1回ゲームをプレイした
Slide 36
Slide 36 text
©XFLAG 粒度の例 マルチプレイの場合 vs. 3レコード ユーザー に関する分析 1レコード ゲームプレイ に関する分析
Slide 37
Slide 37 text
©XFLAG 粒度 粒度の決め方によって 分析できる事柄も、その後の設計も 全然変わってくる
Slide 38
Slide 38 text
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4 Steps
Slide 39
Slide 39 text
©XFLAG Dimensions WHEN WHERE WHO WHAT WHY HOW about Facts ビジネスの 言葉で
Slide 40
Slide 40 text
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4 Steps
Slide 41
Slide 41 text
©XFLAG Facts イベントに対する計測値 e.g. ○ ゲームのクリア時間 ○ ゲームのスコア ○ 購入した商品の値段 足したり掛けたりできるもの
Slide 42
Slide 42 text
©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4 Steps
Slide 43
Slide 43 text
©XFLAG メリット
Slide 44
Slide 44 text
©XFLAG Good Points ○ クエリのパフォーマンスが向上 ○ JOIN が少なくなるため ○ 分析軸を柔軟に追加できる ○ Dimension テーブルを好きなだけ拡張 ○ データを理解しやすい ○ ビジネスプロセスを反映したテーブル設計
Slide 45
Slide 45 text
©XFLAG ディメンションテーブルが充実 分析がパワーアップ
Slide 46
Slide 46 text
©XFLAG Good Points ○ クエリのパフォーマンスが向上 ○ JOIN が少なくなるため ○ 分析軸を柔軟に追加できる ○ Dimension テーブルを好きなだけ拡張 ○ データを理解しやすい ○ ビジネスプロセスを反映したテーブル設計
Slide 47
Slide 47 text
©XFLAG データの理解 業務システム システムの実装を表現 データウェアハウス ビジネスプロセスを表現 ステージ ステージ グループ 1 N ステージ 非正規化 ゲーム開始 ゲーム終了 LEFT JOIN ゲームプレイ
Slide 48
Slide 48 text
©XFLAG やってみた
Slide 49
Slide 49 text
©XFLAG 課題 ○ データを理解するのが難しい ○ 汎用的のないサマリテーブルたち
Slide 50
Slide 50 text
©XFLAG 作戦 できるところからちょっとずつ 重要なビジネスプロセスから順番に着手していっ た
Slide 51
Slide 51 text
©XFLAG 大事だったこと ビジネスプロセスの分析や 粒度をきちんと決めたこと Data Warehouse 全体の整合性を保つ ことができた
Slide 52
Slide 52 text
©XFLAG (参考) ○ Enterprise Bus Matrix ○ Confirmed Dimensions
Slide 53
Slide 53 text
©XFLAG 結果 ○ シンプルなテーブル構造 ○ 汎用的なサマリテーブル ○ セルフサービスなデータ分析
Slide 54
Slide 54 text
©XFLAG 体感では ½ 〜 ⅓ くらい
Slide 55
Slide 55 text
©XFLAG 結果 ○ シンプルなテーブル構造 ○ 汎用的なサマリテーブル ○ セルフサービスなデータ分析
Slide 56
Slide 56 text
©XFLAG つらかったこと
Slide 57
Slide 57 text
©XFLAG つらかったこと ○ 設計するの大変 ○ 時間がかかりすぎるリスク ⇒ 設計コストと得られるメリットの比較 生データとの併用も
Slide 58
Slide 58 text
©XFLAG つらかったこと ○ Hive や Redshift などでは難しい部分も ○ データ更新 ○ 実行効率 ⇒ 妥協も大事
Slide 59
Slide 59 text
©XFLAG 美味しいところだけ いただくの精神
Slide 60
Slide 60 text
©XFLAG https://www.amazon.co.jp/dp/B00DRZX6XS 参考
Slide 61
Slide 61 text
©XFLAG テーブル設計は基礎体力 日々の分析業務や 機械学習プロジェクトを 加速させる
Slide 62
Slide 62 text
©XFLAG Thank You
Slide 63
Slide 63 text
©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