Snowflake CLI を使用した |sf-dbt|の管理¶
注釈
Snowflake CLI の dbt Projects on Snowflake 機能はバージョン3.13.0以降でのみ使用可能です。
Snowflake CLI を使用して、次の操作でdbtプロジェクトを管理できます。
Deploying a dbt project object¶
The snow dbt deploy command uploads local files to a temporary stage and creates a new dbt project object, updates it by making a new version, or completely recreates it. A valid dbt project must contain two files:
dbt_project.yml: A standard dbt configuration file that specifies the profile to use.profiles.yml: A dbt connection profile definition referenced indbt_project.yml.profiles.yamlmust define the database, role, schema, and type.デフォルトでは、 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
Deploy a project named
jaffle_shopfrom a specified directory and create or add a new version depending on whether the dbt project object already exists: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
Listing all available dbt project objects¶
The snow dbt list command lists all available dbt project objects on Snowflake.
次の例は、 snow dbt list コマンドの使用方法を説明しています。
Executing a dbt project object command¶
The snow dbt execute command executes one of the following dbt commands on a Snowflake dbt project object:
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
Describing a dbt project object¶
The snow dbt describe command describes a dbt project object on Snowflake.
次の例では、Snowflakeの my_dbt_project という名前のdbtプロジェクトオブジェクトについて説明します。
snow dbt describe my_dbt_project
Dropping a dbt project object¶
The snow dbt drop command deletes a dbt project object on Snowflake.
次の例では、Snowflakeの my_dbt_project という名前のdbtプロジェクトオブジェクトを削除します。
snow dbt drop my_dbt_project
Use snow dbt commands in a CI/CD workflow¶
注釈
CI/CD ワークフローの構築中に必要なのは、Githubなどのgitサーバーや |sf-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