EXECUTE DBT PROJECT¶
Executes the specified dbt project object or the dbt project in a Snowflake workspace using the dbt command and command-line options specified.
- こちらもご参照ください。
CREATE DBT PROJECT、 ALTER DBT PROJECT、 DESCRIBE DBT PROJECT、 DROP DBT PROJECT、 SHOW DBT PROJECTS
構文¶
指定された名前でdbtプロジェクトオブジェクトを実行します。
EXECUTE DBT PROJECT [ IF EXISTS ] <name>
[ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] ] [ ... ]' ]
[ PROJECT_ROOT = '<subdirectory_path>' ]
バリアント構文¶
指定されたワークスペース名のワークスペースに保存されているdbtプロジェクトを実行します。ワークスペースを所有するユーザーは、このコマンドバリアントを実行するユーザーである必要があります。
EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
[ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
[ PROJECT_ROOT = '<subdirectory_path>' ]
必須パラメーター¶
namedbtプロジェクトオブジェクトを実行する場合は、実行するdbtプロジェクトオブジェクトの名前を指定します。
FROM WORKSPACE オプションを使用してdbtプロジェクトを実行する場合は、dbt Projects on Snowflake のワークスペース名を指定します。ワークスペース名は常に、
user$で示されるユーザーの個人データベースのpublicスキーマを参照して指定されます。ワークスペース名は大文字と小文字が区別され、特殊文字を含めることができるため、ワークスペース名を二重引用符で囲むことをお勧めします。
次の例は、ワークスペース名の参照を示しています。
user$.public."My dbt Project Workspace"
オプションのパラメーター¶
ARGS = '[ dbt_command ] [ --dbt_cli_option option_value_1 [ ... ] [ ... ] ]'Specifies the dbt command and supported command-line options to run when the dbt project executes. This is a literal string that must conform to the syntax and requirements of dbt CLI commands.
If no value is specified, the dbt project executes with the dbt command and command-line options specified in the dbt project object definition. If you specify dbt CLI options without specifying a dbt command, the dbt
runcommand executes by default.デフォルト: 値なし
PROJECT_ROOT = 'subdirectory_path'dbtプロジェクトオブジェクトまたはワークスペース内の
dbt_project.ymlファイルへのサブディレクトリパスを指定します。値が指定されていない場合、dbtプロジェクトはdbtプロジェクトオブジェクトのルートディレクトリにある
dbt_project.ymlファイルで実行します。ルートディレクトリまたは PROJECT_ROOT サブディレクトリに
dbt_project.ymlファイルが存在しない場合はエラーが発生します。デフォルト: 値なし
出力¶
列 |
説明 |
|---|---|
|
dbtプロジェクトが正常に実行された場合は |
|
dbtプロジェクト実行によって返される例外メッセージ。dbtプロジェクトが正常に実行されると、文字列 |
|
dbtプロジェクト実行によって返される標準出力。 |
|
dbtプロジェクト実行の出力ファイルを含むアーカイブ出力の URL。これには、dbtが |
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、 最低 1 つ の次の 権限 が必要です。
権限 |
オブジェクト |
|---|---|
USAGE |
dbtプロジェクト |
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
注釈
EXECUTEDBTPROJECT で指定されたdbtコマンドは、プロジェクトの profiles.yml ファイルの outputs ブロックで指定された role の権限で実行します。操作はさらに、EXECUTE DBT PROJECT を呼び出すSnowflakeユーザーに付与された権限のみに制限されます。指定されたユーザーとロールの両方に、warehouse を使用する権限、プロジェクトの profiles.yml ファイルで指定されている database および schema で操作を実行する権限、そしてdbtモデルが指定する他のSnowflakeオブジェクトで操作を実行する権限が必要です。
例¶
ターゲットとモデルが指定されたデフォルトの実行コマンド¶
dbtプロジェクトオブジェクトのルートディレクトリにある dbt_project.yml ファイルの dev プロファイルをターゲットにするdbt run を実行し、プロジェクト DAG から3つのモデルを選択します。明示的に指定され、デフォルトで実行される run コマンドがありません。
EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
ARGS = '--select simple_customers combined_bookings prepped_data --target dev';
ターゲットとモデルが指定された明示的なテストコマンド¶
dbtプロジェクトオブジェクトのルートディレクトリにある dbt_project.yml ファイルの prod プロファイルをターゲットにするdbt test コマンドを実行し、プロジェクト DAG から3つのモデルを選択します。
EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
ARGS = '--select simple_customers combined_bookings prepped_data --target prod';
下流モデルが指定された明示的な実行コマンド¶
dbt_project.yml ファイルの dev プロファイルをターゲットにするdbt run コマンドを実行し、dbt + 表記を使用した simple_customers モデルのすべての下流モデルを選択します。
EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
ARGS = 'run --select simple_customers+ --target dev';
dbtプロジェクトオブジェクト定義からデフォルト実行と DEFAULT ARGS でサブディレクトリプロジェクトを指定するデフォルト実行コマンド¶
3つのdbtプロジェクトのサブディレクトリを含むdbtプロジェクトオブジェクトの場合、project2 サブディレクトリのdbtプロジェクト用のdbt run コマンドを実行します。実行コマンドは想定され、コマンドは dev プロファイルをターゲットにします。これは DBT PROJECT 定義の DEFAULT ARGS を使用して指定されました。
EXECUTE DBT PROJECT my_database.my_schema.my_parent_dbt_project PROJECT_ROOT = 'project2';
プロダクションタスクを使用してdbtプロジェクトを実行し、テストする¶
dbt run コマンドを6時間間隔で実行する、実稼働dbtターゲットのタスクを作成します。次に、各dbt run タスクが完了後、dbt test コマンドを実行するタスクを作成します。各タスクの EXECUTE DBT PROJECT コマンドは、dbtプロジェクトオブジェクトのルートディレクトリにある dbt_project.yml ファイルの prod プロファイルをターゲットにします。
CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
WAREHOUSE = my_warehouse
SCHEDULE = '6 hours'
AS
EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';
CREATE OR ALTER TASK change_this.public.test_dbt_project
WAREHOUSE = my_warehouse
AFTER run_dbt_project
AS
EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';