EXECUTE DBT PROJECT

指定されたdbtコマンドとコマンドラインオプションを使用して、指定された dbtプロジェクトオブジェクト またはSnowflakeワークスペース内のdbtプロジェクトを実行します。

こちらもご参照ください。

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

バリアント構文

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

EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
  [ DBT_VERSION = 'version_number' ]
  [ 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 [ ... ] [ ... ] ]'

Specifies the dbt command and supported command-line options to use when the dbt project object 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 object 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.

デフォルト: 値なし

DBT_VERSION = 'version_number'

Specifies a version for the dbt project object.

Default: When you execute a dbt project object, the system uses the default version you specified when creating the dbt project object. If none was specified, the system uses 1.9.4 by default.

詳細については、 |sf-dbt|でサポートされているdbt Coreバージョン をご参照ください。

PROJECT_ROOT = 'subdirectory_path'

dbtプロジェクトオブジェクトまたはワークスペース内の:file:`dbt_project.yml`ファイルへのサブディレクトリパスを指定します。このパラメーターは、FROMWORKSPACEオプションを使用してdbtプロジェクトを実行する場合にのみサポートされます。

If no value is specified, the dbt project object executes with the dbt_project.yml file in the root directory of the dbt project object.

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

デフォルト: 値なし

出力

説明

0|1 Success

TRUE if the dbt project object executed successfully; otherwise, FALSE. If the dbt project object fails to execute, an exception message is returned.

EXCEPTION

Any exception message returned by the dbt project execution. If the dbt project object executes successfully, the string None is returned.

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

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

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

Execute and test dbt project objects using production tasks

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

テストまたは一時的なニーズのために、実行時にプロジェクトの固定バージョンを上書きする

my_dbt_project is pinned to 1.9.4. This execution overrides the dbt project object's default 1.9.4 version:

EXECUTE DBT PROJECT finance_analytics
  DBT_VERSION = '1.10.15'