Snowflakeでdbtプロジェクトの実行をスケジュールする¶
Snowflakeの タスク を使用し、EXECUTE DBT PROJECT コマンドで dbt Projects on Snowflake の実行をスケジュールできます。dbt Projects on Snowflake のワークスペースを使用して、ユーザー管理のタスクをすばやく作成し、スケジュールできます。SQLコマンドを使用してタスクを作成することもできます。ワークスペースがdbtプロジェクトオブジェクトに接続されている場合、ワークスペース内からそのプロジェクトの EXECUTE DBT PROJECT コマンドを実行するすべてのタスクを表示できます。
dbtプロジェクトオブジェクトと同じデータベースとスキーマで、EXECUTE DBT PROJECT コマンドを実行するタスクを作成する必要があります。
ワークスペース内からタスクを作成する¶
dbt Projects on Snowflake のワークスペース内からスケジュールを作成する場合、Snowflakeはdbtプロジェクトオブジェクトと同じデータベースとスキーマに保存されるユーザー管理のタスクを作成することにより、スケジュールを作成します。タスク所有者の権限でタスクを実行しますが、タスクの実行はユーザーに関連付けられていません。
ワークスペース内からdbtプロジェクトオブジェクトの実行をスケジュールするタスクを作成するには
ワークスペースエディターの右上にあるdbtプロジェクトメニューから、Scheduled runs の下にある Create schedule を選択します。
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つを選択します。Additional flags には、dbtコマンド用の追加の コマンドラインオプション を入力します。
Create を選択します。
Snowflakeは、指定したパラメーターを使用して EXECUTE DBT PROJECT コマンドを実行するタスクを作成します。
ワークスペース内からのタスクの表示¶
|sf-dbt|のワークスペース内から、ワークスペースに接続されているdbtプロジェクトオブジェクトで EXECUTE DBT PROJECT データベースとスキーマのすべてのタスクを表示できます。タスクを選択すると、タスク定義、タスクの実行履歴、タスクグラフなど、オブジェクトエクスプローラーでその詳細を表示できます。
ワークスペース内からdbtプロジェクトオブジェクトに関連付けられたタスクを表示するには
dbtプロジェクトメニューから View schedules を選択し、リストからスケジュール(タスク)を選択します。
タスクの Task Details がオブジェクトエクスプローラーで開きます。タスクの詳細、タスク定義で構成される SQL ステートメント、タスクオブジェクトに付与された権限が表示されます。
Run History タブを選択してタスクの実行履歴を表示するか、Task Graph タブを選択して タスクグラフ にある他のタスクとこのタスクの関係を表示します(該当する場合)。
詳細については、 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';