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
640
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
160
DPCT発表資料.pdf
yuukimiya
0
9.3k
お家で子どもと楽しむプログラミング
yuukimiya
0
1.3k
Other Decks in Technology
See All in Technology
HCP TerraformとAzure:イオンスマートテクノロジーのインフラ革新 / HCP Terraform and Azure AEON Smart Technology's Infrastructure Innovation
aeonpeople
3
990
RevOpsへ至る道 データ活用による事業革新への挑戦 / path-to-revops
pei0804
3
800
extensionとschema
yahonda
1
100
信頼性を支えるテレメトリーパイプラインの構築 / Building Telemetry Pipeline with OpenTelemetry
ymotongpoo
9
5k
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
300
NOSTR, réseau social et espace de liberté décentralisé
rlifchitz
0
130
Site Reliability Engineering on Kubernetes
nwiizo
6
4.4k
トレードオフスライダーにおける品質について考えてみた
suzuki_tada
3
180
2025/1/29 BigData-JAWS 勉強会 #28 (re:Invent 2024 re:Cap)/new-feature-preview-q-in-quicksight-scenarios-tried-and-tested
emiki
0
310
Amazon Location Serviceを使ってラーメンマップを作る
ryder472
2
160
プロダクト観点で考えるデータ基盤の育成戦略 / Growth Strategy of Data Analytics Platforms from a Product Perspective
yamamotoyuta
0
220
Tech Blog執筆のモチベート向上作戦
imamura_ko_0314
0
740
Featured
See All Featured
Designing for Performance
lara
604
68k
Optimizing for Happiness
mojombo
376
70k
A Philosophy of Restraint
colly
203
16k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
11
900
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Done Done
chrislema
182
16k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
380
Docker and Python
trallard
43
3.2k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
It's Worth the Effort
3n
184
28k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
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 !!