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 PROJECTALTER DBT PROJECTDESCRIBE DBT PROJECTDROP DBT PROJECTSHOW DBT PROJECTS

構文

指定された名前でdbtプロジェクトオブジェクトを実行します。

EXECUTE DBT PROJECT [ IF EXISTS ] <name>
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] ] [ ... ]' ]
Copy

バリアント構文

指定されたワークスペース名のワークスペースに保存されているdbtプロジェクトを実行します。ワークスペースを所有するユーザーは、このコマンドバリアントを実行するユーザーである必要があります。

EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

必須パラメーター

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 [ ... ] [ ... ] ]'

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 run command executes by default.

デフォルト: 値なし

PROJECT_ROOT = 'subdirectory_path'

Specifies the subdirectory path to the dbt_project.yml file within the dbt project object or workspace. This parameter is only supported when executing a dbt project by using the FROM WORKSPACE option.

値が指定されていない場合、dbtプロジェクトはdbtプロジェクトオブジェクトのルートディレクトリにある dbt_project.yml ファイルで実行します。

ルートディレクトリまたは PROJECT_ROOT サブディレクトリに dbt_project.yml ファイルが存在しない場合はエラーが発生します。

デフォルト: 値なし

出力

説明

0|1 Success

dbtプロジェクトが正常に実行された場合は TRUE、それ以外の場合は FALSE。dbtプロジェクトの実行に失敗すると、例外メッセージが返されます。

EXCEPTION

dbtプロジェクト実行によって返される例外メッセージ。dbtプロジェクトが正常に実行されると、文字列 None が返されます。

STDOUT

dbtプロジェクト実行によって返される標準出力。

OUTPUT_ARCHIVE_URL

dbtプロジェクト実行の出力ファイルを含むアーカイブ出力の URL。これには、dbtが /target ディレクトリに書き込むログファイルとアーティファクトが含まれます。詳細については、dbtドキュメント内の`dbtアーティファクトについて`_ をご参照ください。このリンクを直接選択するとエラーが発生します。ただし、この URL を使用してdbtプロジェクトファイルと出力を取得できます。詳細については、 プログラムでdbtのアーティファクトとログにアクセスする をご参照ください。

アクセス制御の要件

この SQL コマンドの実行に使用される ロール には、 最低 1 つ の次の 権限 が必要です。

権限

オブジェクト

USAGE

dbtプロジェクト

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

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

セキュリティ保護可能なオブジェクト に対して 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';
Copy

ターゲットとモデルが指定された明示的なテストコマンド

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';
Copy

下流モデルが指定された明示的な実行コマンド

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';
Copy

プロダクションタスクを使用して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';
Copy