CREATE DBT PROJECT¶
新しい :doc:` dbtプロジェクトオブジェクト </user-guide/data-engineering/dbt-projects-on-snowflake>` を作成するか、既存のdbtプロジェクトを置き換えます。ORREPLACE オプションで CREATE DBT PROJECT を実行すると、バージョン識別子が version$1
にリセットされ、すべてのバージョン名のエイリアスが削除されます。詳細については、 dbtプロジェクトオブジェクトとファイルのバージョン管理 をご参照ください。
- こちらもご参照ください。
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>' ]
[ DEFAULT_ARGS = '<string_literal>' ]
[ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
[ COMMENT = '<string_literal>' ]
必須パラメーター¶
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'
ワークスペース名は大文字と小文字が区別され、特殊文字を含めることができるため、ワークスペース名を二重引用符で囲むことをお勧めします。
バージョン指定子は必須で、
last
、first
、live
、または``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 REPLACE
とIF 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';
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プロジェクトオブジェクトを作成します。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';
複数の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';