【问题标题】:Snowflake Task ran ever minute of the hour雪花任务每小时运行一次
【发布时间】:2020-10-23 06:16:31
【问题描述】:

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

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

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

我这里有什么遗漏吗?

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

-斯里

【问题讨论】:

    标签: snowflake-cloud-data-platform snowflake-task


    【解决方案1】:

    您的任务的CRON syntax 正在通过指定* 为其分钟(第一个)组件请求要执行的任务every minute within the 12th hour of the day(即每天60 次,全部在第 12 小时)。

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

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

    这将执行only once at 1200 hours UTC each day

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

    【讨论】:

    • 谢谢@Kirby,我认为它应该解决它。
    【解决方案2】:

    计划是 cron 格式,你有一个 * 表示分钟,所以它会在那一小时内每分钟运行一次。

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

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

    我建议重新构建该任务,并将第一个 * 的值设置为 0 或 1。

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

    【讨论】:

      最近更新 更多