CREATE DBT PROJECT

新しい :doc:` dbtプロジェクトオブジェクト </user-guide/data-engineering/dbt-projects-on-snowflake>` を作成するか、既存のdbtプロジェクトを置き換えます。ORREPLACE オプションで CREATE DBT PROJECT を実行すると、バージョン識別子が version$1 にリセットされ、すべてのバージョン名のエイリアスが削除されます。詳細については、 dbtプロジェクトオブジェクトとファイルのバージョン管理 をご参照ください。

こちらもご参照ください。

ALTER DBT PROJECTDESCRIBE DBT PROJECTEXECUTE DBT PROJECTSHOW DBT PROJECTSDROP DBT PROJECT

構文

CREATE [ OR REPLACE ] DBT PROJECT [ IF NOT EXISTS ] <name>
  [ FROM '<source_location>' ]
  [ DEFAULT_ARGS = '<string_literal>' ]
  [ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
  [ COMMENT = '<string_literal>' ]
Copy

必須パラメーター

name

Snowflake内のdbtプロジェクトオブジェクトの識別子(名前)を指定する文字列。dbtプロジェクトが作成されるスキーマで一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

オプションのパラメーター

FROM 'source_location'

Snowflake内でdbtプロジェクトオブジェクトのソースファイルの場所を指定する文字列。複数のdbtプロジェクトを含む親ディレクトリ、またはdbtプロジェクトと dbt_project.yml ファイルを含む特定のサブディレクトリである可能性があります。

指定した場所に dbt_project.yml ファイルが含まれていない場合、EXECUTE DBT PROJECT コマンドは PROJECT_ROOT パラメーターを使用して dbt_project.yml ファイルへのサブディレクトリパスを指定する必要があります。

値が指定されていない場合、Snowflakeは空のdbtプロジェクトを作成します。

dbtプロジェクトのソースファイルは、次のいずれかの場所にあります。

  • Gitリポジトリステージ。たとえば:

    '@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'

    SnowflakeでGitリポジトリオブジェクトを作成し、Gitリポジトリを |sf-dbt|のワークスペースに接続する方法については、label-dbt_create_git_integrated_workspace`をご参照ください。ワークスペースを使用せずにGitリポジトリオブジェクトとステージを作成および管理する方法の詳細については、:doc:/developer-guide/git/git-overview` および :doc:`create-git-repository`をご参照ください。

  • 既存のdbtプロジェクトステージ。例えば:

    'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'

    バージョン指定子は必須で、last``(前の例で示したように)、 ``first、または``version$<num>``の形式で既存バージョンの指定子とすることができます。詳細については、 dbtプロジェクトオブジェクトとファイルのバージョン管理 をご参照ください。

  • 内部の名前付きステージ。たとえば:

    '@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'

    内部ユーザーステージとテーブルステージはサポートされていません。

  • Snowflake上のdbtのワークスペース。たとえば:

    'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'

    ワークスペース名は大文字と小文字が区別され、特殊文字を含めることができるため、ワークスペース名を二重引用符で囲むことをお勧めします。

    バージョン指定子は必須で、lastfirstlive、または``version$<num>``の形式で既存バージョンの指定子とすることができます。詳細については、 dbtプロジェクトオブジェクトとファイルのバージョン管理 をご参照ください。

デフォルト: 値なし

DEFAULT_ARGS = 'string_literal'

:doc:`/sql-reference/sql/execute-dbt-project`がコマンドを指定しない場合、デフォルトを指定する文字列 `dbtコマンド`_ および コマンドラインオプション を使用します。

重要

EXECUTEDBTPROJECT コマンドで明示的に指定する引数は、DBTPROJECT 定義で指定されたあらゆるすべてのDEFAULT_ARGSを上書きします。

デフォルト: 値なし

DEFAULT_VERSION = { FIRST | LAST | VERSION$num }

/sql-reference/sql/execute-dbt-project`が使用するdbtプロジェクトオブジェクトのデフォルトバージョンを指定します。詳細については、 :ref:`label-dbt_key_concepts_dbt_project_versioning をご参照ください。値が指定されていない場合、EXECUTE DBT PROJECT は LAST を使用します。詳細については、 dbtプロジェクトオブジェクトとファイルのバージョン管理 をご参照ください。

デフォルト: 値なし

COMMENT = 'string_literal'

dbtプロジェクトオブジェクトのコメントを指定します。

デフォルト: 値なし

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

CREATE DBT PROJECT

スキーマ

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • OR REPLACEIF NOT EXISTS 句は互いに排他的です。両方を同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

SnowflakeでGitリポジトリステージからdbtプロジェクトオブジェクトを作成する

Gitリポジトリステージのdbtプロジェクトファイルから sales_dbt_model という名前のdbtプロジェクトオブジェクトを作成します。コマンドは、Snowflakeで sales_dbt_git_stage という名前のGitリポジトリステージの``main`` ブランチを指定します。この場合、dbt_project.yml はリポジトリルートに保存されます。

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  COMMENT = 'generates sales data models';
Copy

SnowflakeでGitリポジトリステージ内のサブディレクトリからdbtプロジェクトオブジェクトを作成する

複数のdbtプロジェクトを含むGitリポジトリステージから sw_region_dbt_project という名前のdbtプロジェクトオブジェクトを作成します。コマンドは、Snowflakeで sales_dbt_git_stage という名前のGitリポジトリステージの main ブランチを指定します。この場合、dbt_project.ymlsales_dbt_projects_parent`ディレクトリの :file:`sw_region_dbt_project サブディレクトリに保存されます。

CREATE DBT PROJECT sales_db.dbt_projects_schema.sw_region_sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_projects_parent/sw_region_dbt_project'
  COMMENT = 'generates data models for sw sales region';
Copy

既存のdbtプロジェクトオブジェクトの特定バージョンからdbtプロジェクトオブジェクトを作成する

sales_dbt_projects dbtオブジェクトステージの version$2 から:code:sales_nw_dbt_model_combined_bookings という名前の新しいdbtプロジェクトオブジェクトを作成します。DEFAULT_ARGS パラメーターは、nw_region タグを持つモデルのみが EXECUTE DBT PROJECT で実行されるように、--select コマンドラインオプションを指定します。

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_nw_region
  FROM 'snow://dbt/sales_db.dbt_projects_schema.sales_model/versions/version$2'
  DEFAULT_ARGS = '--select "tag:nw_region"'
  COMMENT = 'generates data models for the NW sales region';
Copy

複数のdbtプロジェクトを含むワークスペースからdbtプロジェクトオブジェクトを作成する

dbt Projects on Snowflake 用のワークスペースのライブバージョンから sales_model_from_workspace という名前の新しいdbtプロジェクトオブジェクトを作成します。これは、特に複数のdbtプロジェクトサブディレクトリを含む親ワークスペースからdbtプロジェクトオブジェクトを作成する場合に便利です。ワークスペース名は大文字と小文字が区別され、特殊文字を含めることができるため、ワークスペース名を二重引用符で囲むことをお勧めします。

-- Create a dbt project object from a workspace named "My dbt Project Workspace" in the user's personal database.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  FROM 'snow://workspace/user$.public."My dbt Project Workspace"/versions/live'

-- Execute the dbt project, specifying a subdirectory path for a dbt project within the workspace

EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  PROJECT_ROOT = 'project2'
  ARGS = 'run --target prod';
Copy