Snowflake&dbt Cloud Quickstart 実践 #11「本番環境へのデプロイ」
Snowflake社が公開、展開しているdbt Cloudとの連携実践チュートリアル「Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab」(Snowflakeとdbtクラウドでデータチームを加速するハンズオンラボ)。直近(2025年07月)時点での環境で一通り実践してみました。
当エントリでは実施した一連の手順のうち、「11. Deployment」(本番環境へのデプロイ) の内容について実践と解説を行っていきます。
※実施手順の全容については下記をご参照ください。
※これまでの実践内容一覧は以下をご参照ください。
- Snowflake&dbt Cloud Quickstart 実践 #1〜#5「実践環境の準備・導入」
- Snowflake&dbt Cloud Quickstart 実践 #6「dbtプロジェクトの基本構造」
- Snowflake&dbt Cloud Quickstart 実践 #7「ソースデータ設定とステージング層モデルの作成」
- Snowflake&dbt Cloud Quickstart 実践 #8「シードと増分マテリアライゼーション」
- Snowflake&dbt Cloud Quickstart 実践 #9「マートモデルの作成」
- Snowflake&dbt Cloud Quickstart 実践 #10「テストとドキュメント」
実践#11: デプロイ
前エントリまでの実施手順でdbtにおけるテストと文書化の準備が終わったので、設定やコードを開発環境から本番環境にデプロイする準備が整いました。コードを本番環境にデプロイする前に、環境について簡単に言及しておきます。
前エントリ完了の時点までで、dbt Cloud IDEで行ってきた作業は全て「開発環境」で行われ、編集してきたコードや設定はフィーチャーブランチにコミットされ、構築したモデルは開発環境接続で定義された内容でSnowflakeの開発スキーマに作成されました。フィーチャーブランチでこの作業を行うことで、私達のコードを他の同僚がビルドしているコードや、既に本番環境への準備が出来ていると判断されたコードから切り離すことが出来ます。
Snowflakeの開発スキーマでモデルをビルドすることで、私達がまだ修正やテストを行っているかもしれないデータベースオブジェクトと、本番用ダッシュボードやその他の下流の依存関係を実行しているデータベースオブジェクトを分離することが可能となります。gitブランチとSnowflakeデータベースオブジェクトの組み合わせが、私達の環境を形成します。
gitリポジトリの状況確認
作業を始める前に、全ての作業をfeatureブランチにコミットしたことを確認します。まだコミットする作業が残っている場合は、Commit and pushボタンをクリックしてメッセージを入力し、もう一度Commitをクリック。
全ての作業がコミットされると、gitワークフローのボタンが[Merge to main]と表示されるようになります。をクリックすると、マージ処理がバックグラウンドで自動的に実行されます。完了すると、ブランチを作成というボタンが表示され、現在見ているブランチがメインとなります。
全ての開発作業がメインブランチにマージされたことで、デプロイジョブをビルドできます。本番環境と本番ジョブはPartner Connectによって自動的に作成されています。なのでその設定を状況に合わせて更新していきます。
本番環境の確認(と設定変更)
画面左部メニューの[Orchestration]から[Environments]を選択。
dbt Cloudアカウントに紐づく環境(Environment)の設定画面に遷移します。現時点ではここまでの作業で利用していた開発環境(DEV)が1つ存在しているのみです。右上の[Create environment]を選択。
ここからは本番環境に関する設定を行っていきます。まずは「General Settings(一般設定)」の部分から。ここは既存設定内容から環境名を任意のものに変えるのみとしました。
「Connection(接続)」設定。既存開発環境で利用していたものと同じものをここでは選択します。
選択した内容を確認し次へ。
「Deployment Credentials(デプロイ認証)」設定。接続先DWH(Snowflake)への接続方法を指定、入力します。接続先スキーマはこちらの手順に従ってproduction
としました。
変更を加えた後は、画面右上にある[Save]をクリック。環境情報を保存します。
ジョブの作成と実行、内容確認
現時点では本番環境の設定は出来ましたがこれだけでは環境が仕上がりません。デプロイのジョブを用意する必要があります。なので作りましょう。
画面左側メニュー[Orchestration]→[Environment]に遷移すると、先程の手順で作成した本番環境を選択することが出来ます。
選択後の環境ページ下部にある[+Create job]から[Deploy Job]を選択。
ジョブの各種設定を確認し、ジョブを作成します。
- Job Settings
- ジョブ名を任意の名前に変更。
- Execution settings
- 実行コマンドはデフォルト設定の
dbt build
のみ。 - Run source freshness、及びGenerate docs on runを有効。
- 実行コマンドはデフォルト設定の
Triggers(トリガー)設定は特に無し。(単発実行で確認が出来れば良いので)
Advanced settingsに関しても今回は特に設定指定を行いませんでした。画面右上の[Save]押下で設定を保存、ジョブを作成してください。
ジョブ実行の準備が出来ました![Run Now]を押下。
ジョブが実行キューに入り、程無くして実行に入ります。
あれ、コケましたね...
エラーの詳細を確認してみると、models/exampleフォルダ配下に作成されていたテストでコケていたようです。本来ならばハンズオン作業が進んだ段階で不要なので削除して良かった内容だったのですがてっきり忘れてしまっていました。
特に無くても問題ないのでmodels配下のexampleフォルダ毎削除してしまいます。削除後は変更をリポジトリに反映し、本番環境デプロイジョブにも変更が反映される形としておいてください。
再度本番環境デプロイジョブを実行。今度は上手く行きました!(でも微妙に警告が出ている...)
警告の内容を確認してみると、どうやらプロジェクト設定(dbt_project.yml)におけるmodels
の指定がちょっと甘かったようです。
今度こそオールグリーンでのデプロイジョブ実行成功となりました!
Snowflake環境に移動して、本番スキーマで全てが期待通りに構築されたことを確認してみます。以下のような形で、Snowflakeアカウントのデータベースオブジェクトを更新すると、デフォルトのPartner Connectデータベース内に本番スキーマが表示されていることを確認出来ました。
まとめ
というわけで、Snowflake社提供のSnowflake&dbt Cloud実践チュートリアル「Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab」(Snowflakeとdbtクラウドでデータチームを加速するハンズオンラボ)の実践編、#11「本番環境へのデプロイ」の紹介でした。
次のエントリ「#12」ではSnowsightダッシュボードによるデータの可視化を行います。
参考: