Snowflake任务配置报错:无法同时指定调度计划与前置任务
问题原因
Snowflake任务机制不允许同时指定调度计划(SCHEDULE)和前置依赖任务(AFTER),这是平台硬性限制,因此同时配置两个参数会触发cannot have both a schedule and a predecessor错误。
解决方案
要实现“每月23日且在DE_ER完成后运行”的需求,有两种可行思路:
方案一:调整前置任务的调度
将DE_ER任务的调度设置为每月23日,让pat_t仅依赖DE_ER的完成事件。这样每月23日DE_ER自动启动,完成后pat_t会被触发执行。
修改DE_ER的调度:
ALTER TASK DE_ER SET SCHEDULE = 'USING CRON 0 0 23 * * America';
创建/修改pat_t任务:
CREATE OR REPLACE TASK p.pat_t WAREHOUSE = W_Simple TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24' AFTER DE_ER;
方案二:新增触发任务
如果无法修改DE_ER的原有调度,可以创建一个仅负责每月23日触发的“空任务”,让DE_ER依赖这个触发任务,再让pat_t依赖DE_ER,形成链式触发:
步骤1:创建每月23日触发的空任务
CREATE OR REPLACE TASK p.trigger_monthly_23 WAREHOUSE = W_Simple SCHEDULE = 'USING CRON 0 0 23 * * America' AS SELECT 1; -- 执行无意义空操作,仅用于触发后续任务
步骤2:让DE_ER依赖触发任务
ALTER TASK DE_ER SET AFTER p.trigger_monthly_23;
步骤3:创建/修改pat_t任务
CREATE OR REPLACE TASK p.pat_t WAREHOUSE = W_Simple TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24' AFTER DE_ER;
内容的提问来源于stack exchange,提问作者Rohit Jha
相关产品推荐
相关产品推荐

