dbtプロジェクトオブジェクトについて

DBTPROJECT は、Snowflake内にあるdbtプロジェクトのバージョン管理されたソースファイルを含んでいる、スキーマレベルのオブジェクトです。dbtプロジェクトオブジェクトをワークスペースに接続することも、ワークスペースから独立してオブジェクトを作成および管理することもできます。

dbtプロジェクトオブジェクトは通常、 dbt-project.yml ファイルを含むdbtプロジェクトディレクトリに基づいています。これは、ワークスペース内からdbtプロジェクトオブジェクトを デプロイ (作成)するときにSnowflakeが使用するパターンです。

dbtプロジェクトオブジェクトは、ロールベースのアクセス制御(RBAC)をサポートします。Snowflakeの他のスキーマレベルのオブジェクトと同様に、dbtプロジェクトオブジェクトの CREATE、ALTER、DROP が可能です。Snowflakeウェアハウスから.:doc:/sql-reference/sql/execute-dbt-project コマンドを使用して、 test``run``などのdbtコマンドを実行することができます。タスク を使用すれば、これらのコマンドの実行をスケジュールすることもできます。

dbtプロジェクトオブジェクトの更新方法

ワークスペースを編集しても、dbtプロジェクトオブジェクトは自動的に更新されません。オブジェクトにコードの変更を認識させる場合は、その都度、デプロイ(つまり、新しいバージョンを追加)する必要があります。

プロダクションパイプラインを作成するには、dbtプロジェクトオブジェクトを作成して、 タスクで実行をスケジュールする ことをお勧めします。各dbtプロジェクトオブジェクトのバージョンは不変であるため、そうすることで、誰かが明示的に新しいバージョンを追加しない限り、実行間で変更がないことを保証できます。

dbtプロジェクトのファイルを更新するには、たとえば次のようにして、ワークスペースに新しいバージョンを追加する必要があります。

ALTER DBT PROJECT testdbt.public.my_dbt_project_object
  ADD VERSION FROM 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last';
Copy

dbtプロジェクトをGitで支えており、テストとデプロイを自動化したい場合は、次の例に示すように、Snow CLI snow dbt deploy コマンドを --force オプションを指定して実行します。

snow dbt deploy --source 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last'  --force my_dbt_project;
Copy

--force を使用するとバージョンを追加できます。これを指定しない場合、すでに作成されたオブジェクトに対して CREATE DBT PROJECT を実行するのと同じになるため、失敗します。

バージョン管理の詳細については、 dbtプロジェクトオブジェクトとファイルのバージョン管理 をご参照ください.

dbtプロジェクトオブジェクトとファイルのバージョン管理

Snowflakeは、dbtプロジェクトオブジェクトとそれに対応するプロジェクトファイルのバージョンを管理します。このバージョン管理を使用して、データ開発および展開ライフサイクル全体の変更を追跡および管理できます。Snowflakeは、次の例に示すように、dbtプロジェクトステージ内のdbtプロジェクトオブジェクトのバージョンを識別します。

snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id

version_id は以下の識別子のいずれかになります。

  • VERSION$<数値> - は、VERSION$<数値>``の形式でバージョン識別子を指定します。条件: ``<num> is a positive integer, for example, VERSION$1

    dbtプロジェクトオブジェクトを作成し、dbtプロジェクトオブジェクトの新しいバージョンごとに1つずつインクリメントする場合、バージョン番号は 1 で始まります。

    Snowflakeは、次のタスクを実行するとバージョン識別子をインクリメントします。

    • ワークスペースから Redeploy dbt project します(ALTER コマンドを ADD VERSION オプションを指定して実行します)。

    • ALTER DBT PROJECT コマンドを使用してプロジェクトを更新します。

    • Snow CLI snow dbt deploy コマンドを --force オプションを指定して実行します。

    Snowflakeはバージョン識別子を 1 にリセットし、以下のコマンドを実行するとすべてのバージョンエイリアスを削除します。

    • OR REPLACE オプションのある SQL のCREATEDBTPROJECT コマンド。

  • LAST - dbtプロジェクトオブジェクトの最新バージョンを示します。

  • FIRST - dbtプロジェクトオブジェクトの最も古いバージョンを示します。

  • version_name_alias - ADDVERSION オプションのある ALTER DBT PROJECT コマンドを使用して、dbtプロジェクトオブジェクトの特定のバージョンに対して作成したカスタムバージョン名のエイリアスを示します。バージョン名のエイリアスは常に、VERSION$3 のように特定のバージョン識別子にマッピングされます。

dbtプロジェクトステージに格納されているプロジェクトファイルはバージョンごとに整理され、各バージョンには独自のサブディレクトリがあります。たとえば、VERSION$3 のバージョン識別子を持つ my_dbt_project_object という名前のdbtプロジェクトオブジェクトや dbt_project.yml という名前のdbtプロジェクトファイルは、次の例で示すように参照できます。

snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml