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
    
    Copy
  • config.toml 構成ファイルでコマンドを有効にします。

    [cli.features]
    enable_dbt = true
    
    Copy
  • コマンドが利用可能であることを確認するには、snow --help コマンドを実行します。

     snow --help
    
    dbt should appear in the list of commands, as shown:
    
    Copy
    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
    
    Copy

使用状況

snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
Copy

条件:

  • NAME はdbtプロジェクトオブジェクトの名前です。

  • [--source path> は、プロジェクトの dbt_project.yml ファイルへのパスです。デフォルトは現在の作業ディレクトリです。

  • [--profiles-dir path> は、profiles.yml ファイルのパスです。指定しない場合、--source として解決されたパスに対するデフォルト値。

  • [--force] 新しいdbtプロジェクトオブジェクトを作成するか、更新して既存のバージョンに新しいバージョンを追加します。

  • :codenowrap:`jaffle_shop`という名前のdbtプロジェクトオブジェクトをデプロイします。

    snow dbt deploy jaffle_shop
    
    Copy
  • 指定されたディレクトリから jaffle_shop という名前のプロジェクトをデプロイし、dbtプロジェクトオブジェクトが既に存在する場合は上書きします。

    snow dbt deploy jaffle_shop --force --source /path/to/dbt/directory --profiles-dir ~/.dbt/
    
    Copy

使用可能なすべてのdbtプロジェクトオブジェクトを一覧表示する

snow dbt list コマンドは、Snowflake上で利用可能なすべてのdbtプロジェクトオブジェクトを一覧表示します。

使用状況

snow dbt list [--like <string>] [--in <string>]
Copy

条件:

  • [--like string] はオブジェクト名でフィルタリングするための SQL LIKE パターンです。

  • [--in string] は、このコマンドの範囲を指定します。

  • 使用可能なすべてのdbtプロジェクトオブジェクトを一覧表示します。

    snow dbt list
    
    Copy
  • :codenowrap:`product`データベース内の :codenowrap:`JAFFLE`で始まる名前を持つdbtプロジェクトオブジェクトを一覧表示します。

    snow dbt list --like JAFFLE% --in database product
    
    Copy

dbtプロジェクトオブジェクトコマンドを実行する

snow dbt execute コマンドは、Snowflake dbtプロジェクトオブジェクト上で次のいずれかの dbtコマンド を実行します。

dbtコマンドの使用の詳細については、dbtコマンドリファレンス をご参照ください。

使用状況

snow dbt execute [snowflake-cli-options] NAME [dbt-command-and-options]
Copy

条件:

  • 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
    
    Copy
  • run dbtコマンドを非同期で実行します。

    snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
    
    Copy

CI/CD ワークフローの snow dbt コマンドを使用

注釈

CI/CD ワークフローの構築中に必要なのは、Githubなどのgitサーバーや |sf-cli|だけです。Gitリポジトリオブジェクトは必要ありません。

CI/CD パイプラインを構築するためには、Snowflake CLI でdbtコマンドを実行できます。これらのパイプラインは通常、新しいプルリクエストなどの新しいコードをテストしたり、何かがメインブランチにマージされるたびに実稼働アプリケーションを更新したりするために使用されます。

snow dbt コマンドを使用して CI/CD ワークフローを構築するには、次のステップに従います。

  1. dbtプロジェクトを準備します。

    1. dbtプロジェクトをダウンロードするか、新しいプロジェクトを開始してください。

      • メインプロジェクトディレクトリに dbt_project.yml ファイルおよび profiles.yml ファイルが含まれていることを確認します。

      • dbt_project.yml で参照されているプロファイル名が profiles.yml で定義されていることを確認します。

        注釈

        Snowflakeのdbtプロジェクトオブジェクトはパスワードを必要としないため、profiles.yml にパスワードが含まれている場合は、それが削除されるまでデプロイが停止します。

  2. Snowflake CLI GitHub アクションを設定します。

    Snowflake CLI の GitHub アクションの設定 および Snowflakeとの接続の確認 に関するガイドラインに従います。

  3. ワークフローを定義します。

    組織のニーズに基づいて、ワークフローが実行する必要のあるコマンドを決定します。次の例は、新しいファイルを使用して 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
    
    Copy