Upgrade to Pro — share decks privately, control downloads, hide ads and more …

品質・スピード・ガバナンス どれも諦めない欲張りな dbt 運用を目指して

品質・スピード・ガバナンス どれも諦めない欲張りな dbt 運用を目指して

2023/03/27_『アナリティクスエンジニア』のリアル~リクルートのデータマネジメント、試行錯誤の最前線~での、森田の講演資料になります

Recruit
PRO

March 27, 2023
Tweet

More Decks by Recruit

Other Decks in Business

Transcript

  1. © Recruit Co., Ltd. All Rights Reserved
    品質・スピード・ガバナンス
    どれも諦めない欲張りな dbt 運用を目指して
    株式会社リクルート データ推進室 D3M 部
    森田 順也
    2023/03/27

    View Slide

  2. © Recruit Co., Ltd. All Rights Reserved
    自己紹介
    森田 順也 (もりた じゅんや) @jjjjj_kn
    データ推進室 データテクノロジーユニット D3M 部 アナリティクスエン
    ジニア
    SIerにてデータ異常検知の研究開発に携わった後、2019年にリクルー
    トへ入社。アナリティクスエンジニアとして分析基盤の開発に従事。 data
    saber。
    Podcast
    https://open.spotify.com/show/6Xc6jNS2p1UqjnPppwO80V?si=WXCP2O58RrePvsjTMomtIw
    Zenn
    https://zenn.dev/mjunya1030
    2
    #recruitdata

    View Slide

  3. © Recruit Co., Ltd. All Rights Reserved
    本日お話しすること
    カーセンサーでは、2020年にdbtの検証を始め、導入して2年以上が経っていま
    す。長期間運用する中で、モデリングがうまくいかなかったり、分析のスピード感が合
    わなかったり、データの品質に悩んだりしながら、試行錯誤を重ねてきました。
    本日はこの試行錯誤をお伝えしたいと思います。最適解ではない部分もありますが、
    泥臭いリアルな部分を楽しんでもらえたら嬉しいです。
    3
    #recruitdata

    View Slide

  4. © Recruit Co., Ltd. All Rights Reserved
    4
    ご存知でしょうか
    カーセンサー
    実は、単なる中古車情報サイト
    ではないんです

    View Slide

  5. © Recruit Co., Ltd. All Rights Reserved
    CASE: 自動車業界は100年に一度の大変革時台
    5
    Connected
    Autonomous
    Shared & Services
    Electrification
    コネクティッド
    自動化
    シェアリング
    電動化
    #recruitdata

    View Slide

  6. © Recruit Co., Ltd. All Rights Reserved
    クルマの利用シーンを包括的に支援するプラットフォームへ
    6
    新車
    買いたい
    中古車
    買いたい
    新車
    リースしたい
    中古車
    リースしたい
    借りたい
    カスタマー クライアント
    Mission
    クライアントの商いを拡げ、
    それによって、
    ユーザーの選択肢を拡げる。
    #recruitdata

    View Slide

  7. © Recruit Co., Ltd. All Rights Reserved
    私たちのMission: あらゆる業務をデータで牽引すること
    7
    カーディーラー様に
    売れ筋の車種を提案したい!
    新規事業で追うべき KPIを
    見つけたい!
    集客の効果・コストを
    モニタリングしたい!
    営業 企画 マーケティング
    提案にそのまま持っていける
    BIツールを提供
    さまざまな軸でドリルダウンでき
    るデータソースを提供
    数値定義を統一した
    KPIダッシュボードを提供
    さまざまなニーズに対応できる柔軟なデータ基盤が必要
    #recruitdata

    View Slide

  8. © Recruit Co., Ltd. All Rights Reserved
    dbt によるデータ変換処理を軸とした分析基盤
    8
    Data Lake
    Cloud Storage
    Data Mart
    BigQuery
    Data Warehouse
    BigQuery
    手動入力マスタ
    ディーラー様向け
    アプリ・基盤
    カスタマー向け
    アプリ・基盤
    マーケティング向け
    営業向け
    企画向け
    監視・モニタリング
    Cloud Monitoring
    モデリング/テスト
    dbt Core
    ODS取り込み
    Cloud Functions
    データ抽出・ロード
    Cloud Composer
    Transform
    Extract Load
    Test Modeling Document Version Control Deploy
    Visualize
    #recruitdata

    View Slide

  9. © Recruit Co., Ltd. All Rights Reserved
    分析基盤はビジネスの進化と共に走ってきた
    9
    効率化・品質向上 分析サイクルの多様化
    データを武器にした
    ビジネスへ
    ディメンショナルモデリングと
    Single Source of Truth
    アドホック分析と
    デプロイフロー
    Operational Data Source
    の管理
    取り組みテーマ
    技術テーマ
    前期 中期 後期
    前・中・後期の取り組みを、泥臭い部分も含めてご紹介します
    本日のメインテーマ!
    #recruitdata

    View Slide

  10. © Recruit Co., Ltd. All Rights Reserved
    前期: ディメンショナルモデリングとSSoT
    10
    #recruitdata

    View Slide

  11. © Recruit Co., Ltd. All Rights Reserved
    サイロ化した分析基盤・ツール
    11
    分析ツールの乱立
    クエリの重複
    数値の定義ずれ
    アクセス解析基盤
    営業支援基盤
    管理されてない
    Access, Tableau
    業務支援アプリ
    ログ分析基盤
    広告配信基盤
    広告配信効果の
    振り返り
    ファネル分析
    コホート分析
    提案業務の支援
    アドホック分析
    ディーラー向け
    分析ツール
    KPIモニタリング
    統合できれば効率化・高品質化できるが、
    全基盤のマイグレーションは難しい…
    ビジネス背景
    #recruitdata

    View Slide

  12. © Recruit Co., Ltd. All Rights Reserved
    汎化できる部分のみ SSoT 化し、集中的に保守
    12
    初期は dbt の test 機能のみを
    オプトインして利用*
    アクセス解析基盤
    営業支援基盤
    ログ分析基盤
    広告配信基盤
    テストされ
    ドキュメントの揃った
    単一の
    ディメンショナルモデル
    KPIモニタリング
    マート
    営業提案ツール用
    マート
    広告効果振り返り用
    マート
    単純な集計処理で分析マートを作成し
    品質・生産性向上
    Test/Documentation
    *https://blog.recruit.co.jp/data/articles/data_test_with_dbt/
    汎化できない処理のみ
    都度ロジックを書いて集計
    スマートなところ
    #recruitdata

    View Slide

  13. © Recruit Co., Ltd. All Rights Reserved
    “最強のディメンショナルモデリング”は通用しない
    13
    ディメション
    ファクト
    スタースキーマを作るために、多数のサブシステムからテーブルを連携し揃えるのは非現実的...
    今あるデータから将来書くクエリを最小化できる SSoT を作る
    泥臭いところ
    #recruitdata

    View Slide

  14. © Recruit Co., Ltd. All Rights Reserved
    ヒントは既存ツールのクエリにあり
    14
    既存クエリを自動でCTEごとに図示するツールも活用
    Scheduled Query
    Google App Script
    Access
    Custom SQL
    Custom Dimension
    分析要件を問わず
    頻繁に登場する処理を
    CTEレベルで解析
    半年に渡り既存ツールのデバッグ・改修を並行しながら解析し、SSoTを導出
    泥臭いところ
    #recruitdata

    View Slide

  15. © Recruit Co., Ltd. All Rights Reserved
    中期: アドホック分析とデプロイフロー
    15
    #recruitdata

    View Slide

  16. © Recruit Co., Ltd. All Rights Reserved
    分析サイクルのスピードはビジネスによってさまざま
    16
    分析サイクル
    課題設定→ログ設計→データ収集→分析→行動...
    ref. adobe
    SLOW: 集客効果のモニタリング
    月次、年次で統一されたKPIを定常的に振
    り返る
    FAST: 新機能の初速分析
    毎週のように課題発見、打ち手実施を行
    い、NorthStar となる指標を変えながら
    振り返る
    サイクルの早い分析に
    どう対応するか?
    ビジネス背景
    #recruitdata

    View Slide

  17. © Recruit Co., Ltd. All Rights Reserved
    adhoc レイヤーの導入
    17
    生成されるモデルが全て view であり、更新jobが不要 で、レイヤーを無視でき、通常の開発フ
    ローから切り出してリリースできるレイヤ
    Source Staging Mart Reporting
    Adhoc
    スマートなところ
    #recruitdata

    View Slide

  18. © Recruit Co., Ltd. All Rights Reserved
    開発着手
    Pull Requrest
    Main Merge
    Tag
    adhoc レイヤーの導入
    18
    生成されるモデルが全て view であり、更新jobが不要 で、レイヤーを無視でき、通常の開発フ
    ローから切り出してリリースできるレイヤ
    non-adhoc adhoc
    dbt SQL設計・実装 dbt SQL設計・実装
    dbt JOB設計・実装
    開発環境デプロイ
    開発環境デプロイ
    開発JOBの実行・テーブル生成
    開発デプロイ前レビュー
    本番デプロイ前レビュー
    開発環境データテスト
    開発環境データテスト
    本番デプロイ前レビュー
    本番環境デプロイ
    本番環境デプロイ
    本番JOBの実行・テーブル生成
    本番環境データテスト
    /Doc生成
    本番環境データテスト
    /Doc生成
    開発フロー
    ● テスト
    ● ドキュメンテーション
    ● レビュー
    上記全て行いつつ
    リリースまでの工程を短縮
    ガバナンスは
    どう守るか?
    スマートなところ
    #recruitdata

    View Slide

  19. © Recruit Co., Ltd. All Rights Reserved
    adhoc レイヤの運用・管理
    19
    運用ルール(抜粋)
    ● adhoc テーブルを参照するadhocテーブルを作ってはなりません
    ● adhoc で作ったテーブルを、複数の案件で利用してはなりません
    ○ adhoc : Tableau = 1:1 を維持してください
    ● adhoc で作ったテーブルを、分析用データソースとして提供しないでください
    ● adhoc でないテーブルなのに、adhoc という接頭辞をつけてはなりません
    ● adhoc テーブルは全て adhoc という接頭辞をつけてください
    ● adhoc で作ったテーブルが長期間運用される場合、リファクタリングをしてください
    クエリのサイロ化を防ぐため、アドホックレイヤーの運用ルールが必須
    *リファクタリング推進について、3/28 dbt tokyo meetup * にてお話しする予定ですので、ぜひお越しください!
    https://www.meetup.com/tokyo-dbt-meetup/events/292138977/
    泥臭いところ
    #recruitdata

    View Slide

  20. © Recruit Co., Ltd. All Rights Reserved
    後期: データを武器にしたビジネスへ
    20
    #recruitdata

    View Slide

  21. © Recruit Co., Ltd. All Rights Reserved
    データを武器にしたビジネスへ
    21
    これまで
    集めたデータを、ビジネスに生かす
    これから
    データで価値創出するために、データ中心にビジネスを変える
    販売実績
    データ
    仕入れ
    車種提案
    売れ筋
    車種レ
    ポート
    提案車種
    データ
    提案車種の
    売れ行き
    レポート
    販売促進
    提案
    販促
    データ
    ビジネス 分析
    データ
    データ ビジネス
    分析
    販売
    実績
    データ
    仕入れ
    車種
    提案
    売れ筋
    車種
    レポート
    ?
    ビジネス背景
    #recruitdata

    View Slide

  22. © Recruit Co., Ltd. All Rights Reserved
    データを武器にしたビジネスへ
    22
    これまで
    集めたデータを、業務に生かす
    これから
    データで価値創出するために、データ中心にビジネスを変える
    販売実績
    データ
    仕入れ
    車種提案
    売れ筋
    車種レ
    ポート
    提案内容
    データ
    提案車種の
    売れ行き
    レポート
    販売促進
    提案

    ビジネス 分析
    データ
    データ ビジネス
    分析
    販売
    実績
    データ
    仕入れ
    車種
    提案
    売れ筋
    車種
    レポート
    ?
    データ中心にしたくても、
    業務変更は簡単ではない…
    ● 既存の業務支援アプリを改修?
    ● 新規のアプリを作成して業務を変更?
    業務影響を最小限に
    活きたデータを
    すぐに分析できる手段が必要
    ビジネス背景
    #recruitdata

    View Slide

  23. © Recruit Co., Ltd. All Rights Reserved
    既存の手入力データを分析基盤に直接取り込み
    23
    Data Lake
    Cloud Storage
    Data Mart
    BigQuery
    Data Warehouse
    BigQuery
    商談記録
    監視・モニタリング
    Cloud Monitoring
    モデリング/テスト
    dbt Core
    ODS取り込み
    Cloud Functions
    データ抽出・ロード
    Cloud Composer
    組織目標
    カーディーラー様
    在庫状況
    個人目標
    業務変更を小さくするため、
    既存の Excel/GoogleSheets
    を前提に運用構築
    既存業務の変更を小さくしたことで、企画から半期で運用開始
    スマートなところ
    #recruitdata

    View Slide

  24. © Recruit Co., Ltd. All Rights Reserved
    年度またぎのスキーマ変更を吸収するゲートレイヤー
    24
    年度ごとに参照する source
    を切り替え
    下流テーブルへの
    影響を最小化
    Data Lake
    Cloud Storage
    個人目標
    (2023年度)
    Data Lake
    Cloud Storage
    Data Mart
    BigQuery
    Gate Mart Reporting
    Source
    Source
    個人目標
    (2024年度)
    スマートなところ
    #recruitdata

    View Slide

  25. © Recruit Co., Ltd. All Rights Reserved
    ツールとパイプラインの両テストで不具合を検知・アラート
    Data Lake
    Cloud Storage
    個人目標
    (2023年度)
    Data Lake
    Cloud Storage
    Data Mart
    BigQuery
    Gate Mart Reporting
    Source
    Source
    個人目標
    (2024年度)
    取り込み時テスト
    Cloud Functions
    入力チェック
    Google App Script
    source test
    dbt Core
    model test
    dbt Core
    CSVはBigQueryに
    正しく取り込めるか
    入力された桁数、形
    式は正しいか
    not_null,unique,
    relation は正しいか
    生成されたテーブルは期待通りか
    取り込み時
    入力時 毎時 モデル生成時
    テスト観点
    実施
    タイミング
    泥臭いところ
    #recruitdata

    View Slide

  26. © Recruit Co., Ltd. All Rights Reserved
    Cloud Monitoring 経由で slack 通知
    泥臭いところ
    #recruitdata

    View Slide

  27. © Recruit Co., Ltd. All Rights Reserved
    カーセンサーにとって
    アナリティクスエンジニアリングとは
    27
    #recruitdata

    View Slide

  28. © Recruit Co., Ltd. All Rights Reserved
    変更に対する強さが価値の厳選
    28
    柔軟な変更を行うには ソフトウェア開発のプラクティスが必要条件
    ● 変更前後でテストできること
    ● リネージを把握し、変更による影響を調査できること
    ● テーブルやマクロを切り出し、DRYにする/責務を分けること
    効率化・品質向上 分析サイクルの多様化
    データを武器にした
    ビジネスへ
    ディメンショナルモデリングと
    Single Source of Truth
    アドホック分析と
    デプロイフロー
    Operational Data Source
    の管理
    取り組みテーマ
    技術テーマ
    前期 中期 後期
    #recruitdata

    View Slide

  29. © Recruit Co., Ltd. All Rights Reserved
    カーセンサーには、モダンな分析環境、大規模
    なデータ、チャレンジングな課題が揃っていま
    す。
    アナリティクスエンジニアリングを駆使して
    一緒にビジネスを Drive して行く人を、
    お待ちしています!
    29

    View Slide

  30. © Recruit Co., Ltd. All Rights Reserved
    この後のセッション
    30
    講演資料などのハッシュタグ
    #recruitdata
    イベント終了後にアンケートのご案内もあ
    りますので、是非ご回答をお願いします!
    #recruitdata

    View Slide