如何在Snowflake数据仓库中基于父任务状态设置子任务启停条件
Snowflake任务树:基于父任务状态控制子任务执行
核心解决思路
Snowflake的任务WHEN子句支持通过查询任务历史视图TASK_HISTORY判断父任务的执行状态,以此控制子任务是否触发。以下是针对不同父任务状态场景的具体配置方案:
1. 修正示例中的基础错误
你提供的示例存在两个关键问题:
- 两个任务使用相同名称
DATA_IMPORT,会导致覆盖,需为子任务指定唯一名称 - 使用了中文单引号
‘’,Snowflake要求使用英文单引号''
2. 按父任务状态配置子任务
场景1:子任务仅在父任务成功时执行
通过TASK_HISTORY查询父任务最新执行状态为SUCCEEDED:
-- 创建父任务 CREATE OR REPLACE TASK DATA_IMPORT WAREHOUSE = COMPUTE_WH SCHEDULE = '60 MINUTE' AS INSERT INTO CUSTOMERS2 SELECT * FROM CUSTOMERS; -- 创建子任务:仅父任务成功时执行 CREATE OR REPLACE TASK POST_PROCESS_TASK WAREHOUSE = COMPUTE_WH WHEN ( SELECT STATE FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY( TASK_NAME => 'DATA_IMPORT', SCHEDULED_TIME_RANGE_START => DATEADD('minute', -60, CURRENT_TIMESTAMP()) )) ORDER BY SCHEDULED_TIME DESC LIMIT 1 ) = 'SUCCEEDED' AFTER DATA_IMPORT AS CALL POST_PROCESS_STORED_PROCEDURE(); -- 启用任务(默认创建后为暂停状态) ALTER TASK DATA_IMPORT RESUME; ALTER TASK POST_PROCESS_TASK RESUME;
场景2:子任务在父任务失败时执行
修改WHEN子句的状态判断为FAILED:
CREATE OR REPLACE TASK FAILURE_HANDLER_TASK WAREHOUSE = COMPUTE_WH WHEN ( SELECT STATE FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY( TASK_NAME => 'DATA_IMPORT', SCHEDULED_TIME_RANGE_START => DATEADD('minute', -60, CURRENT_TIMESTAMP()) )) ORDER BY SCHEDULED_TIME DESC LIMIT 1 ) = 'FAILED' AFTER DATA_IMPORT AS CALL FAILURE_NOTIFICATION_PROCEDURE(); ALTER TASK FAILURE_HANDLER_TASK RESUME;
场景3:子任务在父任务有警告但成功时执行
通过WARNING_COUNT字段判断父任务执行时有警告但状态为成功:
CREATE OR REPLACE TASK WARNING_HANDLER_TASK WAREHOUSE = COMPUTE_WH WHEN ( SELECT STATE = 'SUCCEEDED' AND WARNING_COUNT > 0 FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY( TASK_NAME => 'DATA_IMPORT', SCHEDULED_TIME_RANGE_START => DATEADD('minute', -60, CURRENT_TIMESTAMP()) )) ORDER BY SCHEDULED_TIME DESC LIMIT 1 ) AFTER DATA_IMPORT AS CALL WARNING_REVIEW_PROCEDURE(); ALTER TASK WARNING_HANDLER_TASK RESUME;
注意事项
TASK_HISTORY查询需用SCHEDULED_TIME_RANGE_START限定时间范围,避免全表扫描影响性能- 任务创建后默认处于暂停状态,必须通过
ALTER TASK ... RESUME启用 - 若父任务未执行过(无历史记录),子任务的
WHEN条件返回NULL,子任务不会触发 - 任务树层级依赖需确保父/子任务在同一数据库/schema下,或指定完整名称
内容的提问来源于stack exchange,提问作者Vijay
相关产品推荐
相关产品推荐

