EXECUTE DBT PROJECT¶
指定されたdbtコマンドとコマンドラインオプションを使用して、指定された dbtプロジェクトオブジェクト またはSnowflakeワークスペース内のdbtプロジェクトを実行します。
- こちらもご参照ください。
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>' ]
必須パラメーター¶
name
dbtプロジェクトオブジェクトを実行する場合は、実行する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 [ ... ] [ ... ] ]'
dbtコマンド および でサポートされる コマンドラインオプション を指定して、dbtプロジェクトの実行時に実行します。これは文字列リテラルであり、dbt CLI コマンドの構文と要件に準拠する必要があります。
値が指定されていない場合、dbtプロジェクトは dbtプロジェクトオブジェクト定義 で指定された dbtコマンド および コマンドラインオプション で実行します。dbtコマンドを指定せずにdbt CLI オプションを指定すると、dbt
run
コマンドがデフォルトで実行されます。重要
EXECUTEDBTPROJECT コマンドで明示的に指定する引数は、DBTPROJECT 定義で指定されたあらゆるすべてのDEFAULT_ARGSを上書きします。
デフォルト: 値なし
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プロジェクト |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して 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';