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>' ]
  [ COMMENT = '<string_literal>' ]
  [ DEFAULT_TARGET = <default_target> ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
Copy

Parameters

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'

    For more information about creating a Git repository object in Snowflake that connects a Git repository to a workspace for dbt Projects on Snowflake, see Gitリポジトリに接続されたワークスペースを作成する. For more information about creating and managing a Git repository object and stage without using a workspace, see SnowflakeでのGitリポジトリの使用 and 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プロジェクトオブジェクトとファイルのバージョン管理 をご参照ください。

デフォルト: 値なし

COMMENT = 'string_literal'

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

デフォルト: 値なし

DEFAULT_TARGET = default_target

dbtプロジェクトオブジェクトのコンパイルと後続の実行に使用されるプロファイル(例: prod)を指定します。ARGS = --target を指定して EXECUTE DBT PROJECT コマンドを使用することで、このパラメーターをオーバーライドできます。

デフォルト: 値なし

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

dbtパッケージハブまたはGithubからリモート依存関係をプルする権限を付与するために使用される外部アクセス統合を指定します。オブジェクトに対して宣言する場合、 dbt deps はデプロイ中に自動的に実行されます。詳細については、 Snowflake上のdbtプロジェクトの依存関係を理解する をご参照ください。

アクセス制御の要件

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

権限

オブジェクト

CREATE DBT PROJECT

スキーマ

スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。

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

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

使用上の注意

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

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

  • メタデータについて:

    注意

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

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

Create a dbt project object named sales_dbt_model from dbt project files in a Git repository stage. This example references the main branch of a Git repository stage named sales_dbt_git_stage in Snowflake, where the project's dbt_project.yml file is saved in the repository root. The command also sets the default target used when executing dbt commands and specifies the external access integrations required by the project.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  DEFAULT_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = 'my_external_access_integration'
  COMMENT = 'Generates sales data models.';
Copy

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

Create a dbt project object named sw_region_sales_model from a subdirectory inside a Git repository stage that contains multiple dbt projects. The example references the main branch of a Git repository stage named sales_dbt_git_stage in Snowflake, where the project's dbt_project.yml file is saved in the sw_region_dbt_project subdirectory of the sales_dbt_projects_parent directory.

この例では、次のプロパティも設定しています。

  • dbtコマンドによって使用されるデフォルトの実行ターゲット(たとえば prod または dev )はSnowflakeを介して実行されます。

  • dbtパッケージハブまたはGithubからリモート依存関係をプルするためにdbtプロジェクトの使用を許可される外部アクセス統合。

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'
  DEFAULT_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = 'my_external_access_integration'
  COMMENT = 'Generates data models for SW sales region.';
Copy

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

Create a new dbt project object named sales_model_nw_region from version$2 of the existing sales_model dbt project.

この例では、 DEFAULT_TARGET を使用してデフォルトの実行ターゲットも設定し、 EXTERNAL_ACCESS_INTEGRATIONS を使用して許可される外部アクセス統合を指定します。

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_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = (my_ext_integration_1, my_ext_integration_2)
  COMMENT = 'Generates data models for the NW sales region.';
Copy

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

複数のdbtプロジェクトディレクトリを含むワークスペースのライブバージョンから sales_model_from_workspace という名前の新しいdbtプロジェクトオブジェクトを作成します。ユーザーの個人データベース内の「My dbt Project Workspace」。これは、ワークスペースにいくつかのサブプロジェクトがあり、特定のサブディレクトリからdbtプロジェクトオブジェクトを作成する場合に便利です。ワークスペースは大文字と小文字が区別され、特殊文字を含めることができるため、ワークスペース名を二重引用符で囲むことをお勧めします。

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

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