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

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 ファイルが存在しない場合はエラーが発生します。

デフォルト: 値なし

出力

説明

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プロジェクト

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対する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';
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プロジェクトオブジェクト定義からデフォルト実行と 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';
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