ディメンショナルモデリングのすすめ

 ディメンショナルモデリングのすすめ

Developer Summit 2018 Summer

07f2123825aa4d86d69ba6ad18f305e1?s=128

Ojima Hikaru

July 27, 2018
Tweet

Transcript

  1. ©XFLAG ディメンショナル モデリングの勧め

  2. ©XFLAG About Me 生島 光 株式会社ミクシィ XFLAG スタジオ 解析グループ データ分析基盤の開発・運用

    GitHub: ojima-h Twitter: @ojima_h Facebook: hikaru.ojima
  3. ©XFLAG © XFLAG

  4. ©XFLAG 今日話すこと 使いやすいデータウェアハウス を手に入れるために ディメンショナル・モデリング を取り入れてみたお話

  5. ©XFLAG Why Dimensional Modeling?

  6. ©XFLAG BEFORE DB App Redshift APIログ 抽出 そのまま 分析チーム 依頼

    作業待ち
  7. ©XFLAG BEFORE DB App Redshift APIログ 抽出 そのまま 分析チーム Zeppelin

  8. ©XFLAG ステージのクリア数を数え たいんだけど それなら striker_stages っていうテーブルの state が 2 になってる行を数え

    ればいいですよ なにそれ意味わかんない state の詳しい説明は サーバーの仕様書に書い てありますよ
  9. ©XFLAG PROBLEM • 仕様書を読まないと分析できない

  10. ©XFLAG ステージのカテゴリごとの プレイ数を数えたいんだ けど それなら stage_flag って いうカラムの 1ビット目を見たらわかり ますよ

    なにそれ意味わかんない 詳しいことは サーバーのコード読めば わかるんですけどね
  11. ©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない

  12. ©XFLAG マルチプレイ数を数えたい んだけど それなら striker_stages テーブルを使えばいい ですね。 このテーブルは自己参 照テーブルになっている のでこのカラムで

    Group By して自分自身 に結合クァwせdrftgyふ じこlp; ・・・
  13. ©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 複雑なテーブル構造

  14. ©XFLAG キャンペーン施策のROI の算出に必要な値が欲し い 結構大変そうなので、ク エリのテンプレート作って 後で調整できるようにして おきますね

  15. ©XFLAG 300行くらいの SQL

  16. ©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 複雑なテーブル構造 • 長すぎる

    SQL
  17. ©XFLAG そうだ! サマリテーブルを作ろう!

  18. ©XFLAG 〇〇っていう分析がしたい わかりましたサマリテーブ ル作ります △△っていう分析がしたい この前作ったサマリテー ブルは使えなさそうです ね。 わかりましたサマリテーブ ル作ります

    〜〜っていう分析がしたい この前作ったサマリテーブ ルは使えな(以下略
  19. ©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 複雑なテーブル構造 • 長すぎる

    SQL • 乱立する謎のサマリデータ
  20. ©XFLAG BI ツールは 助けてくれない

  21. ©XFLAG PROBLEM • 仕様書を読まないと分析できない • コードを読まないと分析できない • 長すぎる SQL •

    複雑なテーブル構造 • 乱立する謎のサマリデータ Dimensional Modeling が 解決してくれるかも
  22. ©XFLAG Introduction to Dimensional Modeling

  23. ©XFLAG データ分析の流れ ETL 整形 ロード 要件定義 目的 分析手法 ゴール データ収集

    サーバーログ DB 分析 Σ 自動化 Data Warehouse Data Lake
  24. ©XFLAG Data Warehouse ◦ すぐに分析に取りかかれるデータ ◦ どんな分析にも使える柔軟性 業務用データベースとは求められるも のが違う (e.g.

    正規化 )
  25. ©XFLAG Dimensional Modeling Data Warehouse の要件に合わせたテーブル設計

  26. ©XFLAG Dimensional Modeling is... ◦ Ralph Kimball さんが 20年以上前に提唱した DWH

    の設計手法
  27. ©XFLAG FACT DIMENSIONS DIMENSIONS DIMENSIONS DIMENSIONS イベント 状態 e.g. ゲームのプレイログ

    FACTに対する 説明 e.g プレイした ステージに関する情報 DIMENSIONS Star Schema
  28. ©XFLAG 現実世界 FACT DIMENSIONS DIMENSIONS DIMENSIONS DIMENSIONS Dimensional Modeling

  29. ©XFLAG 設計の手順

  30. ©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4

    Steps
  31. ©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4

    Steps
  32. ©XFLAG ビジネスプロセス = お客さんに提供しているサービス・機能(仮) 例)「ゲームをプレイする」 ◦ ビジネスプロセスの内容を言語化 ◦ 使えるデータを確認

  33. ©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4

    Steps
  34. ©XFLAG 粒度 対象のビジネスプロセスをどこまで詳細 なレベルで分析するのか ビジネスの言葉で表現 イベント ファクトテーブルの1行 ?

  35. ©XFLAG 粒度の例 1人のユーザーが 1回ゲームをプレイした

  36. ©XFLAG 粒度の例 マルチプレイの場合 vs. 3レコード ユーザー に関する分析 1レコード ゲームプレイ に関する分析

  37. ©XFLAG 粒度 粒度の決め方によって 分析できる事柄も、その後の設計も 全然変わってくる

  38. ©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4

    Steps
  39. ©XFLAG Dimensions WHEN WHERE WHO WHAT WHY HOW about Facts

    ビジネスの 言葉で
  40. ©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4

    Steps
  41. ©XFLAG Facts イベントに対する計測値 e.g. ◦ ゲームのクリア時間 ◦ ゲームのスコア ◦ 購入した商品の値段

    足したり掛けたりできるもの
  42. ©XFLAG 1. ビジネスプロセスを選ぶ 2. 粒度を決める 3. Dimensionテーブルを決める 4. Factテーブルを決める 4

    Steps
  43. ©XFLAG メリット

  44. ©XFLAG Good Points ◦ クエリのパフォーマンスが向上 ◦ JOIN が少なくなるため ◦ 分析軸を柔軟に追加できる

    ◦ Dimension テーブルを好きなだけ拡張 ◦ データを理解しやすい ◦ ビジネスプロセスを反映したテーブル設計
  45. ©XFLAG ディメンションテーブルが充実 分析がパワーアップ

  46. ©XFLAG Good Points ◦ クエリのパフォーマンスが向上 ◦ JOIN が少なくなるため ◦ 分析軸を柔軟に追加できる

    ◦ Dimension テーブルを好きなだけ拡張 ◦ データを理解しやすい ◦ ビジネスプロセスを反映したテーブル設計
  47. ©XFLAG データの理解 業務システム システムの実装を表現 データウェアハウス ビジネスプロセスを表現 ステージ ステージ グループ 1

    N ステージ 非正規化 ゲーム開始 ゲーム終了 LEFT JOIN ゲームプレイ
  48. ©XFLAG やってみた

  49. ©XFLAG 課題 ◦ データを理解するのが難しい ◦ 汎用的のないサマリテーブルたち

  50. ©XFLAG 作戦 できるところからちょっとずつ 重要なビジネスプロセスから順番に着手していっ た

  51. ©XFLAG 大事だったこと ビジネスプロセスの分析や 粒度をきちんと決めたこと Data Warehouse 全体の整合性を保つ ことができた

  52. ©XFLAG (参考) ◦ Enterprise Bus Matrix ◦ Confirmed Dimensions

  53. ©XFLAG 結果 ◦ シンプルなテーブル構造 ◦ 汎用的なサマリテーブル ◦ セルフサービスなデータ分析

  54. ©XFLAG 体感では ½ 〜 ⅓ くらい

  55. ©XFLAG 結果 ◦ シンプルなテーブル構造 ◦ 汎用的なサマリテーブル ◦ セルフサービスなデータ分析

  56. ©XFLAG つらかったこと

  57. ©XFLAG つらかったこと ◦ 設計するの大変 ◦ 時間がかかりすぎるリスク ⇒ 設計コストと得られるメリットの比較 生データとの併用も

  58. ©XFLAG つらかったこと ◦ Hive や Redshift などでは難しい部分も ◦ データ更新 ◦

    実行効率 ⇒ 妥協も大事
  59. ©XFLAG 美味しいところだけ いただくの精神

  60. ©XFLAG https://www.amazon.co.jp/dp/B00DRZX6XS 参考

  61. ©XFLAG テーブル設計は基礎体力 日々の分析業務や 機械学習プロジェクトを 加速させる

  62. ©XFLAG Thank You

  63. ©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