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
Asset Centric な データ変換パイプラインの攻略法
Search
Recruit
PRO
January 21, 2025
Technology
400
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Asset Centric な データ変換パイプラインの攻略法
2025/01/21に、Tokyo dbt Meetup #11で発表した、森田の資料です。
Recruit
PRO
January 21, 2025
More Decks by Recruit
See All by Recruit
双方向推薦システムにおける長期的マッチング最大化に向けた代理目的関数の設計と実証
recruitengineers
PRO
0
47
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
140
Model Routerを使った逐次LLM選択による毀損低減効果の検証
recruitengineers
PRO
1
38
ストリーム処理基盤のFlink移行検証と適材適所の実践
recruitengineers
PRO
2
66
AI 時代の Platform Engineering
recruitengineers
PRO
2
390
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
3.3k
データ戦略を加速させる プラットフォーム エンジニアリングと進化的アーキテクチャ
recruitengineers
PRO
2
88
まなび領域における生成AI活用事例
recruitengineers
PRO
2
290
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
520
Other Decks in Technology
See All in Technology
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
230
RAG を使わないという選択肢
tatsutaka
1
200
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
110
LLMにもCAP定理があるという話
harukasakihara
0
310
protovalidate-es を導入してみた
bengo4com
0
170
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
590
Android の公式 Skill / Android skills
yanzm
0
130
爆速でマルチプロダクトを立ち上げる時 事業・CTO目線で大事にしたい事
miyatakoji
0
100
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
230
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
170
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
500
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Facilitating Awesome Meetings
lara
57
7k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Google's AI Overviews - The New Search
badams
0
1k
The SEO Collaboration Effect
kristinabergwall1
1
480
エンジニアに許された特別な時間の終わり
watany
107
250k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Transcript
© Recruit Co., Ltd. All Rights Reserved Asset Centric な
データ変換パイプラインの攻略法 株式会社リクルート データ推進室 プロダクト開発統括室 森⽥ 順也 2024/01/21 dbt meetup dbt labs Japan Launch イベント前夜祭
© Recruit Co., Ltd. All Rights Reserved プロダクト開発統括室 データ推進室 結婚‧旅⾏‧⾃動⾞領域
アナリティクスエンジニア /テックリード 2015-2019 IoTデータの研究開発 2019-2020 住宅領域 アナリティクスエンジニア 2020-現在 結婚‧旅⾏‧⾃動⾞領域 アナリティクスエンジニア 森⽥ 順也 Junya MORITA Profile 経歴 所属 2 X: https://x.com/jjjjj_kn Podcast: https://open.spotify.com/show/6Xc6jNS2p1UqjnPppwO80V?si=WXCP2O58RrePvsjTMomtIw Zenn: https://zenn.dev/mjunya1030
祝🎉 dbt Labs Japan Launch!
© Recruit Co., Ltd. All Rights Reserved 4 本⽇お伝えしたいこと dbt
のすばらしさ x dbt 運⽤のリアル ~ Job 管理編 ~
© Recruit Co., Ltd. All Rights Reserved Agenda 1. データパイプラインにおける
Job 管理の課題 2. Asset Centric な依存管理の課題 3. 監査ログを使った data observation 5 お願い:スライドに ✋ があったら 当てはまる⽅は挙⼿をお願いします
© Recruit Co., Ltd. All Rights Reserved 運⽤している分析基盤 Data Lake
Cloud Storage Data Mart BigQuery Data Warehouse BigQuery クライアント様向け アプリ・基盤 カスタマー向け アプリ・基盤 データ抽出・ロード Cloud Composer Transform Extract Load マート生成 dbt Core / Cloud Composer レコメンドシステム 本日の主役となる マート生成ジョブ 集客最適化‧営業活動効率化、ABテストの評価等、事業の価値を最⼤化するためのデータ分析基盤 GCP環境を基盤に、dbt と Cloud Composer によるマート⽣成ジョブを運⽤ マート⽣成ジョブで処理されるデータ量は数百TB
© Recruit Co., Ltd. All Rights Reserved データパイプラインにおける Job 管理の課題
session 1
Q: 500⾏以上のSQLを解析したことがある ✋
© Recruit Co., Ltd. All Rights Reserved 9 Transform における
Job の特徴 ⼀⾒シンプルなタスクでも、細々とした処理が多数出てくる SQLは数百⾏規模に膨れ上がりがち
© Recruit Co., Ltd. All Rights Reserved 10 Job の分割
中間テーブルを作れば、処理をシンプルにできる
© Recruit Co., Ltd. All Rights Reserved 11 分割した job
の依存関係の管理 分割した Job は順番通りに実⾏する必要がある 依存関係をきちんと管理するため、ワークフローエンジンを使う
Q: Jobは成功しているのに、データが更新されてい なかったことがある✋
Q: クエリの循環参照を起こしたことがある✋
© Recruit Co., Ltd. All Rights Reserved 14 依存関係管理の課題 taskが増えていくと、依存関係を把握しづらくなる
データ変換処理では、カラムを⼀つ追加する等により、依存するタスクが増えやすい
© Recruit Co., Ltd. All Rights Reserved 15 Asset Centric
な依存関係管理 データそのものに定義された情報だけで依存関係を管理する 依存関係を直感的に把握でき、Job を意識する必要がない
© Recruit Co., Ltd. All Rights Reserved 16 Asset Centric
なツール例 dbt SQLの中で参照されているテーブルを再帰的にたどることで、データ リネージ(データの流れの系譜)を構築してくれる dagstar SQLに閉じず、 APIリクエスト結果などでも依存関係を管理できる
© Recruit Co., Ltd. All Rights Reserved 17 dbt のすばらしさとは
Asset Centric なアプローチで、Job の依存関係管理から解放 ↓ 複雑なデータ基盤を運⽤できるようになった
© Recruit Co., Ltd. All Rights Reserved Asset Centric な依存管理の課題
session 2
Q: dbtの処理が終わるのに5分以上かかる✋
Q: 異なる dbt job が、おなじテーブルを更新してい た✋
© Recruit Co., Ltd. All Rights Reserved 21 データの多重更新 Asset
Centric な Job 管理で、複数の Job を起動すると データの多重更新を起こしやすい
© Recruit Co., Ltd. All Rights Reserved 22 多重更新を避けるための機能 dbtの
exclude 機能は、特定のモデルを実⾏対象から除外できる 多重更新が起きているテーブルを洗いだし、逐⼀ exclude で除外すればよい
© Recruit Co., Ltd. All Rights Reserved 23 Asset Centric
の弱点 Jobが複数あり、除外条件が定義されると、どの Job がどのテーブルを更新するのか データの定義(SQL)と除外条件の両⽅を読まないとわからない
© Recruit Co., Ltd. All Rights Reserved 24 実際におきた課題 job
B の実⾏時、table X で不整合が発⽣し、下流テーブルが作られないケース job C、job Dは正しく成功する?tableXを参照しているから失敗する?
© Recruit Co., Ltd. All Rights Reserved 監査ログを使った data observation
session 3
Q: Jobがコケたら、⼀旦⾃分に連絡が来る✋
© Recruit Co., Ltd. All Rights Reserved 27 data observation
によって⾜りない情報を補う どのテーブルが、いつ、どの Job によって更新されているのか、⾃動収集する elementary-data https://docs.elementary-data.com/dbt/pac kage-models#dbt-run-results dbt run の後に on-run-end フックを使ってロ グを記録し、「どのテーブルがどの Job で更 新されたのか」や「どの Job が失敗したの か」といった情報を記録してくれる BigQuery監査ログ https://cloud.google.com/bigquery/docs/referen ce/auditlogs dbtが生成したテーブルと、それを実行した Job の 情報を確認できる
© Recruit Co., Ltd. All Rights Reserved 28 BigQuery 監査ログをつかった
data observation BigQuery 監査ログとdbtの query comment 機能を使って Jobと更新テーブルのステータスをモニタリングする
© Recruit Co., Ltd. All Rights Reserved 29 BigQuery 監査ログの基本
監査ログの protopayload_auditlog.metadataJson というフィールドに JSON形式で BigQuery のテーブル⽣成 Job のログが格納される
© Recruit Co., Ltd. All Rights Reserved 30 dbt のクエリに
Job 名を⼊れる dbt は model ファイルに記述された Jinja 形式の SQL を compile してから BigQuery 上で実⾏する。 この際、compile する際に動的な comment を付与できる。 query_comment: append: true comment: "Job name is {{ var(JOB_NAME, 'unknown') }}" dbt run --select table_X --vars={"JOB_NAME": "daily-Job-10am"} /* Job name is daily-Job-10am */ create or replace view `gcp-project`.`my_dataset`.`table_X` OPTIONS( description="""""", ) as ... project.yml の設定 build 時に渡すオプション 生成されるDDL文
© Recruit Co., Ltd. All Rights Reserved 31 テーブルを更新した Job
を可視化する 監査ログから Job 名‧テーブル名‧⽣成時刻の3つを取得する
© Recruit Co., Ltd. All Rights Reserved 32 テーブルを更新した Job
以外の情報も可視化する スロット消費量やjob実⾏時間も取得できる
© Recruit Co., Ltd. All Rights Reserved 33 実際のモニタでわかること Job
J の実行時間が 伸びている 新規に Job A が登場し テーブルが追加されている Job J,C,E が同じテーブルを 多重更新している 実行時間や スロット消費の詳細も わかる
© Recruit Co., Ltd. All Rights Reserved 34 Asset Centric
なアプローチで、Job の依存関係管理から解放 ↓ 複雑なデータ基盤を運⽤できるようになった ↓ Asset Centric なJob管理の複雑さ(多重更新)が⽣まれた ↓ テーブルと Job の対応はモニタリング等で運⽤対処 まとめ
© Recruit Co., Ltd. All Rights Reserved 35 今は、Job とテーブルの更新履歴を可視化し、改善点を探せる状態
今後は、Job を統合したり 不要な Job を削減する必要がある ソースとなるデータ量の負荷や連携タイミングといった パイプラインの課題を乗り越えてJob削減した話は… 今後の展望
https://www.recruit.co.jp/special/techconference202 5 リクルート テックカンファレンス リクルートの開発事例・ナレッジを共有する 技術カンファレンス こちらで発表するので、ぜひご参加ください! (自分のセッションは20日17:45~予定です)
Q: Recruit Techカンファレンスに⾏きたいと思った ✋
© Recruit Co., Ltd. All Rights Reserved 38 We are
hiring! カジュアル⾯談はこちらより お申し込みください データサイエンティスト 機械学習エンジニア データエンジニア アナリティクスエンジニア R&Dエンジニア データアプリケーションエンジニア クラウドエンジニア