🌸

dbt cloudとdbt coreのハイブリッド環境構築をしてみた

2024/04/02に公開

ハイブリッド構築にしたかった背景

ビジネスサイドにデータエンジニアが自分しかいないため、各部のSQLが書けるアナリストの方にdbtでの開発を行なってもらう以上開発環境のメンテナンスコストを最小限にしたかったためdbt cloudを採用しました。

ただ、開発を行なっていく上でdbt-osmosisの利用などをしていきたいと考えたため、自身の開発環境はdbt coreにする方針にしました。
今後採用がうまくいった場合も考え、docker上に開発環境を建てることにしました。

参考にした記事

ほとんど以下の記事を参照して実現ができました!
自分でやっていた際は全くうまくいかず本当にありがたすぎる記事でした...

https://knowledge.insight-lab.co.jp/bi/-dbtcore-simple-start

https://knowledge.insight-lab.co.jp/bi/dbtcloud-and-dbtcore

上記記事で書かれていなかった部分の補足

dbt coreインストール時

上記記事はsnowflakeでのインストールとなっていましたが、自分の場合BigQueryを利用していたため

python -m pip install dbt-snowflake

の部分は

python -m pip install dbt-bigquery

としました!

git cloneする際

この辺り知識がなかったのでつまずきました...!
HTTP URLでのgit clone時にユーザ名とパスワードが求められます。
その際ユーザー名はそのままユーザー名なのですが、パスワードはログイン時のパスワードではなくPersonal Access Tokenの値を入力する必要があります。

https://dev.classmethod.jp/articles/github-personal-access-tokens/

git cloneした後

dbt cloudにて開発環境の構築を行うと自動的にdbt_packageとtargetディレクトリがgit ignoreされているはずなので、dbt core側にもこの二つのディレクトリの作成が必要です。

※GCPとの認証方式にサービスアカウントを選択する場合
先んじてkeyfileを格納するディレクトリを作成しておき、keyfileも入れておくとスムーズです!

作成が完了したらdbt init実行

ターミナルに対話型でステップが進んでいくはずなので、
コネクタ : bigqueryを選択(自分の環境に合わせて)

認証方式 : service accountを選択

keyfile先ほど格納しておいたjsonを指定

thread : 1 ここはいじり方がわからなかったのでデフォルトだったはずです

timeout : 300 上と同様

ここまで完了したらdbt debugを実行

これで同期が取れるようになったはずのなので、ブランチを切ってdbt deps、dbt runを実行

mainにマージすれば完了🎉
(この辺記憶が曖昧です...)

・dbt-power-userを入れる際にpythonのエラーが起きる場合
pythonのインストール方法にもよると思いますが、自分の場合はinter Pretterのパスをdbt debugにて表示されるパスに合わせることでインストールがうまくいきました!

https://github.com/AltimateAI/vscode-dbt-power-user/issues/87

終わりに

dbt coreを使って初めてdbt osmosisを使ったのですが、あまりにも便利すぎてこれなしではdescription管理できなくなりました...!

上記はあくまでも自身の環境下においてうまくいった方法になります!
何かの参考になれば幸いです!

補足などあればぜひご教授ください!

Discussion