■ はじめに
Snowflake の タスク(Task) に調べてみた
目次
【1】タスク(Task) 【2】使用上の注意 【3】SQL文 1)CREATE TASK 2)ALTER TASK 3)SHOW TASKS 【4】サンプル 例1:Hello world
【1】タスク(Task)
* Snowflakeにおいて、以下を実行可能 + 単一の SQL ステートメント + ストアドプロシージャへの呼び出し + Snowflakeスクリプト を使用した手続き型ロジック * タスクを テーブルストリーム(※1) と組み合わせて、 連続して ELT ワークフローを実行し、処理可能
https://docs.snowflake.com/ja/user-guide/tasks
https://docs.snowflake.com/ja/user-guide/tasks-intro
【2】使用上の注意
* あくまで「【単一】のSQL」で、1つのSQL文しか実行できない => 複数なら、「ストアドプロシージャ」などで対応する * CREATE TASKした際は、状態「suspended(一時停止)」なので 再開したい場合は、ALTER TASK などを実行する必要がある
【3】SQL文
1)CREATE TASK
* タスクの作成
https://docs.snowflake.com/ja/sql-reference/sql/create-task
SCHEDULE
[1] USING CRON expr time_zone:クローン形式 [2] num MINUTE:分刻み
WHEN boolean_expr
* タスクがトリガーされると、式の条件を検証して、実行するかどうかを決定 => 式の条件が 満たされない 場合、タスクは現在の実行をスキップ
2)ALTER TASK
* タスクの変更
https://docs.snowflake.com/ja/sql-reference/sql/alter-task
-- 再開/一時停止 ALTER TASK [ IF EXISTS ] <name> RESUME | SUSPEND;
3)SHOW TASKS
* タスクの一覧表示
https://docs.snowflake.com/ja/sql-reference/sql/show-tasks
【4】サンプル
例1:Hello world
CREATE OR REPLACE TASK hello_world_task WAREHOUSE = your_warehouse SCHEDULE = 'USING CRON 0 */1 * * * Asia/Tokyo' TIMEZONE = 'Asia/Tokyo' COMMENT = ' This is a sample' AS SELECT sysdate(); -- 「state=suspended」になっている SHOW TASKS; -- Task 再開 ALTER TASK hello_world_task RESUME; -- 1時間以内の直近10件のタスク履歴見るやつ select * from table(information_schema.task_history( scheduled_time_range_start=>dateadd('hour',-1,current_timestamp()), result_limit => 10, task_name=>'hello_world_task')); -- 停止 ALTER TASK hello_world_task SUSPEND
参考文献
https://zenn.dev/yuucu/scraps/7daedac475c65a
https://dev.classmethod.jp/articles/snowflake-copy-task/
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ Snowpipe ~
https://dk521123.hatenablog.com/entry/2023/04/15/225515