CREATE DBT PROJECT¶
新しい :doc:` dbtプロジェクトオブジェクト </user-guide/data-engineering/dbt-projects-on-snowflake>` を作成するか、既存のdbtプロジェクトを置き換えます。ORREPLACE オプションで CREATE DBT PROJECT を実行すると、バージョン識別子が version$1 にリセットされ、すべてのバージョン名のエイリアスが削除されます。詳細については、 Versioning for dbt project objects and files をご参照ください。
- こちらもご参照ください。
ALTER DBT PROJECT、 DESCRIBE DBT PROJECT、 EXECUTE DBT PROJECT、 SHOW DBT PROJECTS、 DROP 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> [ , ... ] ) ]
Parameters¶
nameSnowflake内の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>``の形式で既存バージョンの指定子とすることができます。詳細については、 Versioning for dbt project objects and files をご参照ください。内部の名前付きステージ。たとえば:
'@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'ワークスペース名は大文字と小文字が区別され、特殊文字を含めることができるため、ワークスペース名を二重引用符で囲むことをお勧めします。
バージョン指定子は必須で、
last、first、live、または``version$<num>``の形式で既存バージョンの指定子とすることができます。詳細については、 Versioning for dbt project objects and files をご参照ください。
デフォルト: 値なし
COMMENT = 'string_literal'dbtプロジェクトオブジェクトのコメントを指定します。
デフォルト: 値なし
DEFAULT_TARGET = default_targetSpecifies the profile used for compilation and subsequent runs (for example,
prod) of the dbt project object. You can override this parameter by using the EXECUTE DBT PROJECT command withARGS = --target.デフォルト: 値なし
EXTERNAL_ACCESS_INTEGRATIONS = integration_nameSpecifies the external access integration used to grant permissions to pull remote dependences from dbt package hub or Github. When declared on an object,
dbt depswill run automatically during deployment. For more information, see Understand dependencies for dbt Projects on Snowflake.
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
|---|---|
CREATE DBT PROJECT |
スキーマ |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。
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';
SnowflakeでGitリポジトリステージ内のサブディレクトリからdbtプロジェクトオブジェクトを作成する¶
複数のdbtプロジェクトを含むGitリポジトリステージから sw_region_dbt_project という名前のdbtプロジェクトオブジェクトを作成します。コマンドは、Snowflakeで sales_dbt_git_stage という名前のGitリポジトリステージの main ブランチを指定します。この場合、dbt_project.yml は sales_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';
既存のdbtプロジェクトオブジェクトの特定バージョンからdbtプロジェクトオブジェクトを作成する¶
sales_dbt_projects dbtオブジェクトステージの version$2 から:code:sales_nw_dbt_model_combined_bookings という名前の新しいdbtプロジェクトオブジェクトを作成します。
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'
COMMENT = 'generates data models for the NW sales region';
複数の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';