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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Recruit
PRO
January 21, 2025
Technology
370
2
Share
Asset Centric な データ変換パイプラインの攻略法
2025/01/21に、Tokyo dbt Meetup #11で発表した、森田の資料です。
Recruit
PRO
January 21, 2025
More Decks by Recruit
See All by Recruit
まなび領域における生成AI活用事例
recruitengineers
PRO
2
190
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
330
AIを用いたカスタマーサポートの業務プロセス・組織変革の実現
recruitengineers
PRO
1
180
問い合わせ自動化の技術的挑戦
recruitengineers
PRO
2
280
「Air ビジネスツールズ」のクライアントサポートにおける生成 AI 活用
recruitengineers
PRO
0
130
AI活用のためのアナリティクスエンジニアリング
recruitengineers
PRO
2
200
SaaS事業のデータマネジメント事例
recruitengineers
PRO
0
160
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
520
LLM のプロダクト導入における開発の裏側と技術的挑戦
recruitengineers
PRO
1
230
Other Decks in Technology
See All in Technology
最初の一歩を踏み出せなかった私が、誰かの背中を押したいと思うようになるまで / give someone a push
mii3king
0
140
ふりかえりがなかった職能横断チームにふりかえりを導入してみて学んだこと 〜チームのふりかえりを「みんなで未来を考える場」にするプロローグ設計〜
masahiro1214shimokawa
0
410
自分のハンドルは自分で握れ! ― 自分のケイパビリティを増やし、メンバーのケイパビリティ獲得を支援する ― / Take the wheel yourself
takaking22
1
580
JOAI2026講評会資料(近藤佐介)
element138
1
130
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
170
非エンジニア職からZOZOへ 〜登壇がキャリアに与えた影響〜
penpeen
0
460
インターネットの技術 / Internet technology
ks91
PRO
0
110
昔はシンプルだった_AmazonS3
kawaji_scratch
0
270
Eight Engineering Unit 紹介資料
sansan33
PRO
3
7.2k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.9k
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
270
Featured
See All Featured
Claude Code のすすめ
schroneko
67
220k
Abbi's Birthday
coloredviolet
2
6.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
310
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
Statistics for Hackers
jakevdp
799
230k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.7k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
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エンジニア データアプリケーションエンジニア クラウドエンジニア