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
dbtをAirflowで動かす道のりは続く...
Search
Yuu.Kimy
November 28, 2023
Technology
0
320
dbtをAirflowで動かす道のりは続く...
タイミーさんとの合同勉強会で発表させて頂いた資料です。
dbt CoreをAirflow(Cloud Composer)で動かした時の検証結果をまとめています。
Yuu.Kimy
November 28, 2023
Tweet
Share
More Decks by Yuu.Kimy
See All by Yuu.Kimy
Scheduled Queryの運用を楽にするBotを実装してみたお話
yuukimiya
0
160
Airflow社内勉強会@Classi
yuukimiya
0
150
DPCT発表資料.pdf
yuukimiya
0
9.1k
お家で子どもと楽しむプログラミング
yuukimiya
0
1.2k
Other Decks in Technology
See All in Technology
サーバーレスAPI(API Gateway+Lambda)とNext.jsで 個人ブログを作ろう!
shuntaka
PRO
0
560
技術負債による事業の失敗はなぜ起こるのか / Why do business failures due to technical debt occur?
i35_267
0
190
20240717_イケコパ代表Copilot_in_Teams会社でこう使ってます
ponponmikankan
2
430
[NIKKEI Tech Talk]Bias for Action!! 実践から学ぶための仕組とコミュニティ / Community for Practice and Learning
kanamasa
0
260
「我々はどこに向かっているのか」を問い続けるための仕組みづくり / Establishing a System for Continuous Inquiry about where we are
daitasu
0
170
累計ダウンロード数1億8000万を超えるアプリケーションプラットフォームのレガシーシステム脱却とモダン化への道
kmitsuhashi
0
120
さらに高品質・高速化を目指すAI時代のテスト設計支援と、めざす先 / AI Test Lab vol.1
shift_evolve
0
190
クラウド利用者の「責任」をどう果たす?AWSセキュリティ対策のススメ #AWSSummit
hiashisan
0
270
Scaling Technical Excellence at 104: Evolution in AWS and Developer Empowerment
scotthsieh825
1
150
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
[NIKKEI Tech Talk] KDDI/KAG Scrum & Community for Engineering Training
curanosuke
2
220
RAGのサービスをリリースして1年3ヶ月が経ちました
segavvy
4
900
Featured
See All Featured
How to name files
jennybc
67
96k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
Unsuck your backbone
ammeep
666
57k
RailsConf 2023
tenderlove
16
720
Embracing the Ebb and Flow
colly
81
4.3k
What's in a price? How to price your products and services
michaelherold
239
11k
Optimising Largest Contentful Paint
csswizardry
18
2.6k
For a Future-Friendly Web
brad_frost
173
9.2k
GitHub's CSS Performance
jonrohan
1026
450k
The Cult of Friendly URLs
andyhume
75
5.9k
Debugging Ruby Performance
tmm1
71
11k
Building an army of robots
kneath
301
42k
Transcript
dbtをAirflowで動かす道のりは続く... 分析推進室 Kimiya Yuu
本日のお話 • タイトルの通り、dbt(dbt Core)をAirflowで動かすことを奮闘した記録です。 • まだ、検証段階ですので、不正確な情報が含まれているかもしれません。 ご了承くださいm(_ _)m
背景 • これまでAirflow(Cloud Composer)にて、定常的なバッチ更新で運用してきた。 ◦ 基本は、BigQueryに対するデータ更新処理 • ただ、日常の開発は、やり辛さが発生しており、開発体験が悪い.. ◦ ➜
dbtによる開発に切り替えたい • ただし、定常運用は、既に、オペレーションとしては確立しており、 大きくは変更したくない。 ➜ 学習コストがかかり、キャッチアップに時間がかかるため。 • 上記を踏まえ、dbtをAirflowで動かてみたい!
検討 • 以下の方式が考えられる • 折角、導入するのであれば、dbtで出来る体験をAirflowに持ち込みたい ➜ 上記により、#3で決定 ➜ 個人的に使ってみたかったというのも大いにありw #
dbt 実行概要 気になるポイント 1 dbt Core BashOperator利用 BashOperatorに閉じてしまう.. 2 dbt Cloud DbtCloudRunJobOperator利用 dbt Cloudをまだ導入していない ..& 同上 3 dbt Core Cosmosパッケージ利用 dbtのモデルもDAGの依存関係として表示可
What’s Cosmos ?? • Astronomer社が提供しているOSSであり、Airflow上でdbtを動かすことが可能 • Airflowの画面UIで、dbtのモデルのリネージを可視化できる! 参考: https://astronomer.github.io/astronomer-cosmos/index.html
環境 • 現状、利用している環境を踏まえて、以下を選択 • ※今、弊社で利用しているComposerで動いているAirflowのバージョンと Cosmosのバージョンで、Python的にはコンフリクトすることは無さそう🤗 ◦ Airflow: Cloud Composer
ver. 2.1.14 ◦ Cosmos: ver.1.2.0 ◦ dbt Core: ver.1.3.7 ◦ dbt-bigquery: ver.1.3.0 参考: https://astronomer.github.io/astronomer-cosmos/getting_started/execution-modes-local-conflicts.html
設定・実装 • 設定 ◦ Composer側に、PyPIからCosmosパッケージをインストールする ◦ GCSのディレクトリ構成は以下の通り • 実装 ◦
ドキュメントを参考に、DbtTaskGroup を利用して、 dbtのモデルの実行処理を実装する
ハマったこと • ドキュメント通りに実装しても、エラーが発生した... ◦ ドキュメント&コードはそれなりに読む必要がある ▪ 例: stringで渡すと書いてあったのに、 Pathオブジェクトで渡す必要があり.. (後述)
• dbt -> BigQueryの認証は、profiles.yml を渡して、ProfileConfigを生成すると、 json keyを利用しなくてもOK ◦ profiles.ymlには、BigQueryの実行権限を持つプロジェクトを指定 ◦ 事前に作成していないデータセットに、モデル結果を保存させると、 データセットまで作成するので、データセット生成の権限がないとエラー..
結果 ※補足: 上記の結果は、裏側では、dbt run が実行されている状態。dbt testは試していないですm(_ _)m
参考1
参考2
考察 • 既に、dbtのモデルの運用していたとしても、Cosmosを使った事前検証は必要 • AirflowのDAGの中で、dbtのモデルを表現できるのは強みと思しき ◦ dbtを利用する際は、基本的に、dbtのモデルを意識すれば良い • dbtのプロジェクトをDAGごとに分離できるのも強み ◦
完全に分離するのであれば、Docker/k8sを検討するのが良いと思しき ◦ ↑ただし、モデルの実行時間(全体)が長くなりそう.. • 小〜中規模なデータ分析基盤であれば、dbt + Cosmos + Airflowで十分かも ◦ 今年(2023年)にリリースされ、結構ホットなOSSであるが、 本番利用は慎重に検討したほうが良さそうな予感,,
Thank you for your attention !!