$30 off During Our Annual Pro Sale. View Details »

つかわれるプラットフォーム 〜デザイン編〜@DPM#2

takegue
December 02, 2019

つかわれるプラットフォーム 〜デザイン編〜@DPM#2

takegue

December 02, 2019
Tweet

More Decks by takegue

Other Decks in Technology

Transcript

  1. つかわれるデータプラットフォーム
    〜デザイン編〜
    ஛໺ फ़ี
    %BUB1MBUGPSN.FFUVQ

    View Slide

  2. ͜ΕΛ͓࿩͢͠Δਓ
    ஛໺ फ़ีʢ!UBLFHVF

    %BUB1MBUGPSN
    .FFUVQ
    3FUUZιϑτ΢ΣΞΤϯδχΞ
    $PSF7BMVF σʔλΞʔΩςΫςΟϯά
    σʔλͷՁ஋Λ࠷େԽ͢Δ࢓૊Έઃܭͷ࣮ݱ
    ࣥච׆ಈ
    ʮ༏ઌ౓ֶशʹΑΔਪનจ͔Βͷݟग़͠நग़ʯ03ֶձ
    ʮ΍ͬͯΈΑ͏ʂ ػցֶशʢ4PUXBSF%FTJHOʣʯ
    ʮࢼֶͯ͠Ϳ ػցֶशೖ໳ʯ
    ʮσʔλج൫ͻͱΓ"EWFOU$BMFOEBSʯ /FX

    ଞʜ

    View Slide

  3. View Slide

  4. View Slide

  5. 分析上で発生する悲しみ
    %BUB1MBUGPSN
    .FFUVQ

    View Slide

  6. 分厚いjoin (わからない)

    View Slide

  7. 依存関係を壊したくなくて乱立するオレオレview

    View Slide

  8. 整合性が保てるか不安なダッシュボード群

    View Slide


  9. %BUB1MBUGPSN
    .FFUVQ
    これらは設計(デザイン)の失敗が原因

    View Slide

  10. 分析のためのデザイン
    %BUB1MBUGPSN
    .FFUVQ
    注意を払うべきデザインの3つの観点をさっくり紹介

    View Slide

  11. 42- 1ZUIPO 3
    分析のためのデザイン: 42-WT1ZUIPOʁ
    利用者を想定した言語(インタフェース)選びも選定基準のひとつ
    ● データアクセスのため目的特化
    ● 汎用的なプログラムが書きづらい
    ● エンジンごとに命令セット変わる
    ● コードの保守・運用しづらい
    ● 汎用的なプログラム描きやすい
    ● ライブラリも充実...
    ● 機械学習等への接続も比較的容易
    ● コードの保守・運用はしやすい

    View Slide

  12. データをディメンションテーブルとファクトテーブルに分けて整理
    分析のためのデザイン: εϊʔϑϨʔΫεΩʔϚ %BUB1MBUGPSN
    .FFUVQ
    ディメンジョンテーブル:
    テーブルは非正規化状態で保持
    ファクトテーブル:
    ディメンションに対して集計

    View Slide

  13. ԣ࣋ͪ ॎ࣋ͪ
    分析のためのデザイン: ԣ࣋ͪ WTॎ࣋ͪ
    *% ଐੑ ଐੑ
    1 John Hoge
    2 Ben Fuga
    *% ଐੑ ஋
    1 属性1 John
    1 属性2 Ben
    2 属性1 Ben
    2 属性2 Ben
    ● 型制約をつけやすい
    ● 補完がききやすい
    ● 記述が冗長になりやすい
    ● ピボットテーブル向き
    ● 制約の保持が厳しい

    View Slide

  14. BigQuery上での実践: Rettyでの事例
    %BUB1MBUGPSN
    .FFUVQ

    View Slide

  15. データフロー
    依存の方向性
    データ
    置き場

    View Slide

  16. データフロー
    依存の方向性
    データ
    置き場
    ディメンション
    ファクト
    原則 横持ち
    各 Projectは
    指標から選ぶ
    ビューで
    依存関係の明示
    単方向の依存
    だいたいSQL

    View Slide

  17. イベント層
    %BUB1MBUGPSN
    .FFUVQ
    - イベントログ系のレコードテーブルを整形、構造化する。
    - クロスプラットフォームである程度共通に使えるような構造化
    (自前のログ基盤, Firebase, GoogleAnalytics ...)
    - 不要なカラムや前処理等も行う

    View Slide

  18. エンティティ層
    %BUB1MBUGPSN
    .FFUVQ
    ドメインにおける主要なエンティティについてまとめる
    - プライマリテーブル(core);
    - joinの手間を減らし、使いやすい形式に構造化
    - ユニーク制約等を実現
    - as-was分析のために各entittyでhistoryを構築
    - ディメンジョンテーブル(dim__xxx): 分析カスタム定義のディメンジョン

    View Slide

  19. 指標層
    %BUB1MBUGPSN
    .FFUVQ
    - ファクトテーブルの構築する
    - 特定の指標の最小粒度(grain)の構築
    - 同じデータセット内では、必ず同じ指標を持つ
    指標に着目したグルーピング
    - 指標のバージョニングの実現(自動生成)

    View Slide

  20. %BUB1MBUGPSN
    .FFUVQ
    Q. 誰のためのデザイン?

    View Slide

  21. %BUB1MBUGPSN
    .FFUVQ
    分析者
    ステークホルダ
    意思決定者
    データ基盤
    開発者
    アプリケーション
    開発者
    Q. 誰のためのデザイン?

    View Slide

  22. %BUB1MBUGPSN
    .FFUVQ
    分析者
    ステークホルダ
    意思決定者
    データ基盤
    開発者
    アプリケーション
    開発者
    転送基盤 分析基盤
    レポーティング
    基盤
    ログ基盤
    ヒトとヒトのつなぎめに価値を作る: デザインの問題
    Q. 誰のためのデザイン?

    View Slide


  23. %BUB1MBUGPSN
    .FFUVQ
    つかいやすい基盤でみんなを幸せになろう!

    View Slide

  24. %BUB1MBUGPSN
    .FFUVQ

    View Slide