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
790
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
170
Airflow社内勉強会@Classi
yuukimiya
0
170
DPCT発表資料.pdf
yuukimiya
0
9.5k
お家で子どもと楽しむプログラミング
yuukimiya
0
1.3k
Other Decks in Technology
See All in Technology
グループ ポリシー再確認 ③
murachiakira
0
140
GigaViewerにおけるMackerel APM導入の裏側
7474
0
110
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
12k
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
0
190
OSMnx Galleryの紹介
mopinfish
0
120
開発も運用もビジネス部門も! クラウドで実現する「つらくない」統制とセキュリティ / Effortless Governance and Security Enabled by the Cloud
kanny
3
1.2k
Type Challengesに新しい問題を追加して Type ChallengesのMaintainerになった話
ysknsid25
3
630
型がない世界に生まれ落ちて 〜TypeScript運用進化の歴史〜
narihara
1
180
Cloud Run を解剖して コンテナ監視を考える / Breaking Down Cloud Run to Rethink Container Monitoring
aoto
PRO
0
110
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
24k
AI駆動時代の新規事業の作り方
ryohysk
2
140
Swiftは最高だよの話
yuukiw00w
0
200
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
How to Ace a Technical Interview
jacobian
276
23k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
How to train your dragon (web standard)
notwaldorf
92
6k
Embracing the Ebb and Flow
colly
85
4.7k
The Cult of Friendly URLs
andyhume
78
6.4k
Faster Mobile Websites
deanohume
307
31k
Code Reviewing Like a Champion
maltzj
523
40k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Docker and Python
trallard
44
3.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
25
2.8k
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 !!