dbt cloudとdbt coreのハイブリッド環境構築をしてみた
ハイブリッド構築にしたかった背景
ビジネスサイドにデータエンジニアが自分しかいないため、各部のSQLが書けるアナリストの方にdbtでの開発を行なってもらう以上開発環境のメンテナンスコストを最小限にしたかったためdbt cloudを採用しました。
ただ、開発を行なっていく上でdbt-osmosisの利用などをしていきたいと考えたため、自身の開発環境はdbt coreにする方針にしました。
今後採用がうまくいった場合も考え、docker上に開発環境を建てることにしました。
参考にした記事
ほとんど以下の記事を参照して実現ができました!
自分でやっていた際は全くうまくいかず本当にありがたすぎる記事でした...
上記記事で書かれていなかった部分の補足
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の値を入力する必要があります。
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にて表示されるパスに合わせることでインストールがうまくいきました!
終わりに
dbt coreを使って初めてdbt osmosisを使ったのですが、あまりにも便利すぎてこれなしではdescription管理できなくなりました...!
上記はあくまでも自身の環境下においてうまくいった方法になります!
何かの参考になれば幸いです!
補足などあればぜひご教授ください!
Discussion