Snowflake CLI を使用した |sf-dbt|の管理¶
dbt Projects on Snowflake 機能を使用して Snowflake CLI をインストールする¶
snow dbt
コマンドを含む Snowflake CLI のパブリックプレビューバージョンをインストールするには、まず Snowflake CLI バージョン3.9.0またはそれ以降をインストールする必要があります。詳細については、 Snowflake CLI のインストール をご参照ください。
|sf-cli|の |sf-dbt| 機能を有効にする¶
プレビューの間は、次のいずれかのメソッドを使用して、新しい:codenowrap:snow dbt
コマンドを有効にする必要があります。
codenowrap:
SNOWFLAKE_CLI_FEATURES_ENABLE_DBT
環境変数を設定します。export SNOWFLAKE_CLI_FEATURES_ENABLE_DBT=true
config.toml
構成ファイルでコマンドを有効にします。[cli.features] enable_dbt = true
コマンドが利用可能であることを確認するには、
snow --help
コマンドを実行します。snow --help dbt should appear in the list of commands, as shown:
Usage: snow [OPTIONS] COMMAND [ARGS]... Snowflake CLI tool for developers [v3.9.0] ... ╭─ Commands ────────────────────────────────────────── │ app Manages a Snowflake Native App │ │ connection Manages connections to Snowflake. │ │ cortex Provides access to Snowflake Cortex │ │ dbt Manages dbt on Snowflake projects │ │ ... │ ╰─────────────────────────────────────────────────────
接続管理¶
Snowflake CLI には、Snowflakeとやり取りするための有効な接続が必要です。接続の管理については、Snowflake接続の管理 をご参照ください。
dbtプロジェクトをサポートする Snowflake CLI コマンド¶
Snowflake CLI はdbtプロジェクト用に以下のコマンドを提供します。
snow dbt deploy
snow dbt list
snow dbt execute
dbtプロジェクトオブジェクトをデプロイする¶
codenowrap:snow dbt deploy
コマンドは、仮ステージにローカルファイルをアップロードし、新しいdbtプロジェクトオブジェクトを作成し、新しいバージョンを作成して更新するか、完全に再作成します。有効なdbtプロジェクトには、2つのファイルが含まれている必要があります。
dbt_project.yml
:標準のdbt構成ファイル。使用するプロファイルを指定する必要があります。profiles.yml
:dbt_project.yml
で参照されるdbt接続プロファイル定義。profiles.yaml
は、データベース、ロール、ウェアハウス、およびスキーマを定義する必要があります。次の例のように、残りの値は空のままにすることができます。<profile_name>: outputs: dev: account: '' database: <database_name> role: <role_name> schema: <schema_name> type: snowflake user: '' warehouse: <warehouse_name> target: dev
使用状況¶
snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
条件:
NAME
はdbtプロジェクトオブジェクトの名前です。[--source path>
は、プロジェクトのdbt_project.yml
ファイルへのパスです。デフォルトは現在の作業ディレクトリです。[--profiles-dir path>
は、profiles.yml
ファイルのパスです。指定しない場合、--source
として解決されたパスに対するデフォルト値。[--force]
新しいdbtプロジェクトオブジェクトを作成するか、更新して既存のバージョンに新しいバージョンを追加します。
例¶
:codenowrap:`jaffle_shop`という名前のdbtプロジェクトオブジェクトをデプロイします。
snow dbt deploy jaffle_shop
指定されたディレクトリから
jaffle_shop
という名前のプロジェクトをデプロイし、dbtプロジェクトオブジェクトが既に存在する場合は上書きします。snow dbt deploy jaffle_shop --force --source /path/to/dbt/directory --profiles-dir ~/.dbt/
使用可能なすべてのdbtプロジェクトオブジェクトを一覧表示する¶
snow dbt list
コマンドは、Snowflake上で利用可能なすべてのdbtプロジェクトオブジェクトを一覧表示します。
使用状況¶
snow dbt list [--like <string>] [--in <string>]
条件:
[--like string]
はオブジェクト名でフィルタリングするための SQL LIKE パターンです。[--in string]
は、このコマンドの範囲を指定します。
例¶
dbtプロジェクトオブジェクトコマンドを実行する¶
snow dbt execute
コマンドは、Snowflake dbtプロジェクトオブジェクト上で次のいずれかの dbtコマンド を実行します。
dbtコマンドの使用の詳細については、dbtコマンドリファレンス をご参照ください。
使用状況¶
snow dbt execute [snowflake-cli-options] NAME [dbt-command-and-options]
条件:
NAME
はdbtプロジェクトオブジェクトの名前です。[snowflake-cli-options]
は、次を含む|sf-cli| オプションのリストです。--run-async
は、dbtコマンドを非同期で実行し、その進行状況を追跡するために使用できるクエリをすぐに返します。--help
または:codenowrap:--connection
など任意のグローバル Snowflake CLI オプション。
[dbt-command-and-options]
は、たとえば:codenowrap:`run --target dev`のようなdbtコマンドの名前とそのオプションです。
例¶
dbt
test
コマンドを実行します。snow dbt execute jaffle_shop test
run
dbtコマンドを非同期で実行します。snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
CI/CD ワークフローの snow dbt
コマンドを使用¶
注釈
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