雪花 cron 任务错误? (不能在每个月的 x 天做)

Posted

技术标签:

【中文标题】雪花 cron 任务错误? (不能在每个月的 x 天做)【英文标题】:Snowflake cron task bug? (Can't do for every x day of month) 【发布时间】:2021-07-05 04:08:35 【问题描述】:

我认为使用 cron 作业的任务调度存在重大缺陷 - 如果我错了或遗漏了什么,请纠正我:

如果安排在未来几个月的所需日期之前的一个月中的某一天(今天是第 5 天,我可以将任务安排在每个月的第 6 天或 5 到 12 之间的任何日期参数)

CREATE OR REPLACE TASK MYTASK
 WAREHOUSE= XXX
 SCHEDULE = 'USING CRON 1 17 6 * * Asia/Kuala_Lumpur'
AS CALL SP_ALL_OPS();


ALTER TASK MYTASK RESUME;


select * from table(information_schema.task_history(task_name=>'MYTASK')) WHERE STATE = 'SCHEDULED';

如果安排在未来几个月的所需日期之前的一个月中的某一天,那就不好了(今天是第 5 天,我不能为每个月的第 1 天安排任务)。补充:任务只能接受 5 到 12 之间的一天(正好 1 周)。超出这个范围的数字根本不能用(BIZARRE BEHAVIOR @@)

CREATE OR REPLACE TASK MYTASK
 WAREHOUSE= XXX
 SCHEDULE = 'USING CRON 1 17 1 * * Asia/Kuala_Lumpur'
AS CALL SP_ALL_OPS();


ALTER TASK MYTASK RESUME;


select * from table(information_schema.task_history(task_name=>'MYTASK')) WHERE STATE = 'SCHEDULED';

我做错了什么吗?让我知道是否有解决方案。在这种情况下,我只能在每月 1 日安排一次任务,并在第一次运行时运行所需的任务?这根本没有意义,因为典型的 linux 机器 cron 作业不会以这种方式运行。无法在线找到解决方案 - 因此,如果有人能对此有所了解,将会有所帮助。

编辑:这里“不好”,因为当我运行上面的任务时,它不会显示任务是否已“计划”。很好,它指出查询只能“返回过去 7 天内的任务活动或未来 8 天内的下一次计划执行”。

【问题讨论】:

当您说您无法安排时间时,您是否遇到任何错误或根本不起作用? @Sergiu,我不确定任务是否已经开始。只是基于 task_history - 它不是“已启动” 【参考方案1】:

这与安排任务无关。如果您运行以下命令,您应该能够看到该任务,并且它的状态将是“STARTED”,这意味着它已被安排。

SHOW TASKS LIKE 'MYTASK';

这是关于information_schema.task_history函数的:

https://docs.snowflake.com/en/sql-reference/functions/task_history.html#usage-notes

此函数可以返回过去 7 天内运行的所有执行或未来 8 天内的下一次计划执行。

【讨论】:

嗨,当我运行这个节目任务时 - 我根本看不到我的任务。我是否需要指定架构或仓库或其他任何内容? 不,您不需要指定架构。只要您在同一个数据库中,您就应该能够列出它们。而对于其他数据库中的任务,可以使用“SHOW TASKS IN DATABASE DB_NAME” 明白了——我明白你的意思了——所以从技术上讲,“task_history”只会显示将在接下来的 7/8 天内运行的任务,但在“显示任务”中,它将显示所有任务已经安排好了。所以如果我将它设置为在每月 1 日运行,从技术上讲,我可以在本月 25 日运行“task_history”,我可以看到计划任务吗?我对吗?这种安排有点违反直觉。 在这种情况下,也请把答案标记为正确:) 您好,考虑一下。我可以接受这样一个事实,即 task_history 只能显示将在下个月 5 日到 12 日之间运行的计划任务(考虑到我今天将任务安排在 5 日),但不显示计划任务将在下个月 1 日运行是违反直觉的。我有点想知道在雪花中为 task_history 功能进行这种设计的目的是什么。从这个功能设计的角度提问......无论如何,感谢您迄今为止的解释。

以上是关于雪花 cron 任务错误? (不能在每个月的 x 天做)的主要内容,如果未能解决你的问题,请参考以下文章

安排雪花任务每月运行一次

任务计划cron / chkconfig工具/ system管理服务/unit及target介绍

安排Cron跳过每个月的第一个星期六

CRON 表达式在每个月的最后一天触发 Azure 函数

春天计划任务的cron表达式验证

Spring定时任务@Scheduled的cron表达式