Schedule execution of dbt project objects on Snowflake

You can use Snowflake tasks to schedule execution of a dbt project object with the EXECUTE DBT PROJECT command. From a workspace, you can quickly create and schedule a user-managed task to execute a connected dbt project object. You can also use SQL commands to create a task directly. If a workspace is connected to a dbt project object, you can view all tasks that run the EXECUTE DBT PROJECT command for that object.

dbtプロジェクトオブジェクトと同じデータベースとスキーマで、EXECUTE DBT PROJECT コマンドを実行するタスクを作成する必要があります。

注釈

Serverless tasks can't be used to execute dbt project objects. You must specify a user-managed warehouse when creating a task that executes the EXECUTE DBT PROJECT command.

ワークスペース内からタスクを作成する

When you create a schedule from within a workspace, Snowflake creates a user-managed task in the same database and schema as the dbt project object. The task runs with the privileges of the task owner, but task runs are not associated with a user.

ワークスペース内からdbtプロジェクトオブジェクトの実行をスケジュールするタスクを作成するには

  1. From the dbt project menu on the right side of the project pane, under Scheduled runs, choose Create schedule.

  2. Schedule a dbt run ダイアログボックスで、次を実行します。

    • Schedule name には、タスクの名前を入力します。

    • Frequency には、at 修飾子を使用するか Custom を選択しCRON式を入力して、Hourly から Monthly までの範囲の頻度を選択します。タスクのスケジュールの詳細については、CREATE TASK コマンドリファレンスの SCHEDULE = ... をご参照ください。

    • :ui:`dbt properties`の下:

      • Operation には、スケジュールで実行するdbtコマンドを選択します。サポートされているコマンドのリストについては、 サポートされているdbtコマンドとフラグ をご参照ください。

      • Profile には、dbtプロジェクトの profiles.yml ファイルで定義されているプロファイルの1つを選択します。

      • :ui:`Additional flags`には、dbtコマンド用の追加の`コマンドラインオプション`_を入力します。

  3. Create を選択します。

    Snowflakeは、指定したパラメーターを使用して EXECUTE DBT PROJECT コマンドを実行するタスクを作成します。

ワークスペース内からのタスクの表示

From within a workspace, you can view all tasks in the database and schema that execute the connected dbt project object. You can choose a task to view its details in the object explorer, including the task definition, the run history of the task, and the task graph.

ワークスペース内からdbtプロジェクトオブジェクトに関連付けられたタスクを表示するには

  • dbtプロジェクトメニューから View schedules を選択し、リストからスケジュール(タスク)を選択します。

    タスクの Task Details がオブジェクトエクスプローラーで開きます。タスクの詳細、タスク定義で構成される SQL ステートメント、タスクオブジェクトに付与された権限が表示されます。

    Run History タブを選択してタスクの実行履歴を表示するか、Task Graph タブを選択して タスクグラフ にある他のタスクとこのタスクの関係を表示します(該当する場合)。

    詳細については、 View tasks and task graphs in Snowsight をご参照ください。

SQL を使用してタスクを作成する

CREATE TASK を使用して、EXECUTE DBT PROJECT コマンドを実行するタスクを作成できます。SQLを使用して、異なるdbt CLI オプションで異なるdbtコマンドを実行するタスクを作成することにより、Snowflakeでdbtのデプロイをオーケストレーションする強力な方法を提供します。

次の SQL 例では、6時間間隔でdbt run コマンドを実行する実稼働dbtターゲットのタスクを作成します。

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

その後、次の SQL は、以前の run_dbt_project タスクが完了するごとに、dbt test コマンドを実行するタスクを作成します。

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