2

我目前正在做一个雪花“任务”,每天凌晨更新一张桌子。

我当前的任务是使用以下语法创建的 -

CREATE OR REPLACE TASK "DB"."SCHEMA"."SAMPLE_TASK"
  WAREHOUSE = SAMPLE_WAREHOUSE
  SCHEDULE = 'USING CRON * 12 * * * UTC'
  TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24'
AS
  CREATE OR REPLACE "DB"."SCHEMA"."EMP"
  AS 
  SELECT * FROM "DB"."SCHEMA"."EMP_STAGE";

我在 CST 工作,由于 UTC 为 -7 小时,我的任务预计将在早上 5 点运行,它确实做到了。我确认在 INFORMATION_SCHEMA 中使用“TASK_HISTORY”-

SELECT * FROM TABLE(DB.INFORMATION_SCHEMA.TASK_HISTORY()) WHERE NAME = 'SAMPLE_TASK';

但它还在剩余一小时的每一分钟内额外运行了 59 次,直到 6 点。

  • 初始 QueryID 时间戳 - 2020-07-02 05:00:00.000 -0700
  • 最终 QueryID 时间戳 - 2020-07-02 05:59:00.000 -0700

我在这里错过了什么吗?

感谢您通读,非常感谢任何帮助。

-斯里兰卡

4

2 回答 2

2

计划是 cron 格式,并且您有一分钟的 *,所以它会在那一小时内每分钟运行一次。

cron 格式的详细信息可以在 web 的许多页面上找到,一个示例如下,注意 cron 格式的第一个“参数”是分钟:

https://support.acquia.com/hc/en-us/articles/360004224494-Cron-time-string-format

我建议为第一个 * 重建该任务,其值为 0 或 1。

我希望这会有所帮助...丰富

于 2020-07-02T15:44:50.637 回答
1

您的任务的CRON 语法通过* 为其分钟(第一个)组件指定 a 来请求在一天的第 12 小时内每分钟执行的任务(即每天 60 次,全部在第 12 小时内)。

根据您的描述,您寻求的是以下内容:

SCHEDULE = '使用 CRON 0 12 * * * UTC'

只会在每天 1200 小时 UTC 执行一次

使用crontab guruCRON tester之类的工具可以帮助测试您的 CRON 计划,然后再将它们实施到您的 Snowflake 任务中。

于 2020-07-02T15:48:58.047 回答