Snowflake CLI を使用した dbt Projects on Snowflake の管理¶
注釈
Snowflake CLI の dbt Projects on Snowflake 機能はバージョン3.13.0以降でのみ使用可能です。
Snowflake CLI を使用して、次の操作でdbtプロジェクトを管理できます。
dbtプロジェクトオブジェクトのデプロイ¶
snow dbt deploy コマンドは、仮ステージにローカルファイルをアップロードし、新しいdbtプロジェクトオブジェクトを作成し、新しいバージョンを作成して更新するか、完全に再作成します。有効なdbtプロジェクトには、2つのファイルが含まれている必要があります。
dbt_project.yml:使用するプロファイルを指定する標準のdbt構成ファイル。profiles.yml:dbt_project.ymlで参照されるdbt接続プロファイル定義。profiles.yamlは、データベース、ロール、スキーマ、およびタイプを定義する必要があります。デフォルトでは、 dbt Projects on Snowflake は、dbt環境またはプロファイルから指定されたターゲットスキーマ(
target.schema)を使用します。dbt Coreの動作とは異なり、profiles.ymlファイルで指定されたターゲットスキーマは、正常にコンパイルまたは実行するためには、dbtプロジェクトを作成する前に存在している必要があります。
<profile_name>: target: dev outputs: dev: database: <database_name> role: <role_name> schema: <schema_name> type: snowflake
次の例は、 snow dbt deploy コマンドの使用方法を説明しています。
:codenowrap:`jaffle_shop`という名前のdbtプロジェクトオブジェクトをデプロイします。
snow dbt deploy jaffle_shop
指定されたディレクトリから
jaffle_shopという名前のプロジェクトをデプロイし、dbtプロジェクトオブジェクトがすでに存在するかどうかに応じて、新しいバージョンを作成するか追加します。snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
カスタムプロファイルディレクトリを使用し、 外部アクセス統合 を有効にして、指定されたディレクトリから
jaffle_shopという名前のプロジェクトをデプロイします。snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --default-target dev --external-access-integration dbthub-integration --external-access-integration github-integration --force
使用可能なすべてのdbtプロジェクトオブジェクトのリスト¶
snow dbt list コマンドは、Snowflake上で利用可能なすべてのdbtプロジェクトオブジェクトをリストします。
次の例は、 snow dbt list コマンドの使用方法を説明しています。
dbtプロジェクトオブジェクトコマンドの実行¶
snow dbt execute コマンドは、Snowflake dbtプロジェクトオブジェクト上で次のいずれかの dbtコマンド を実行します。
dbtコマンドの使用の詳細については、dbtコマンドリファレンス をご参照ください。
次の例は、 snow dbt execute コマンドの使用方法を説明しています。
dbt
testコマンドを実行します。snow dbt execute jaffle_shop test
rundbtコマンドを非同期で実行します。snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
dbtプロジェクトオブジェクトの記述¶
snow dbt describe コマンドは、Snowflake上のdbtプロジェクトオブジェクトを記述します。
次の例では、Snowflakeの my_dbt_project という名前のdbtプロジェクトオブジェクトについて説明します。
snow dbt describe my_dbt_project
dbtプロジェクトオブジェクトのドロップ¶
The snow dbt drop command deletes a dbt project object on Snowflake.
次の例では、Snowflakeの my_dbt_project という名前のdbtプロジェクトオブジェクトを削除します。
snow dbt drop my_dbt_project
CI/CD ワークフローの snow dbt コマンドの使用¶
注釈
CI/CD ワークフローの構築中に必要なのは、Githubなどのgitサーバーや Snowflake CLI だけです。Gitリポジトリオブジェクトは必要ありません。
CI/CD パイプラインを構築するためには、Snowflake CLI でdbtコマンドを実行できます。これらのパイプラインは通常、新しいプルリクエストなどの新しいコードをテストしたり、何かがメインブランチにマージされるたびに実稼働アプリケーションを更新したりするために使用されます。
snow dbt コマンドを使用して CI/CD ワークフローを構築するには、次のステップに従います。
dbtプロジェクトを準備します。
dbtプロジェクトをダウンロードするか、新しいプロジェクトを開始してください。
メインプロジェクトディレクトリに
dbt_project.ymlファイルおよびprofiles.ymlファイルが含まれていることを確認します。dbt_project.ymlで参照されているプロファイル名がprofiles.ymlで定義されていることを確認します。注釈
Snowflakeのdbtプロジェクトオブジェクトはパスワードを必要としないため、
profiles.ymlにパスワードが含まれている場合は、それが削除されるまでデプロイが停止します。
Snowflake CLI GitHub アクションを設定します。
Snowflake CLI の GitHub アクションの設定 および Snowflakeとの接続の確認 に関するガイドラインに従います。
ワークフローを定義します。
組織のニーズに基づいて、ワークフローが実行する必要のあるコマンドを決定します。次の例は、新しいファイルを使用して
product_pipelineという名前のdbtプロジェクトオブジェクトのバージョンを更新し、変換を実行し、最後にテストを実行する CI ワークフローについて説明しています。- name: Execute Snowflake CLI command run: | snow dbt deploy product_pipeline snow dbt execute product_pipeline run snow dbt execute product_pipeline test