不接受Bigquery自定义计划Cron语法

时间:2019-07-04 09:16:15

标签: cron google-bigquery scheduled-tasks

我正在尝试安排查询在Bigquery UI中当日运行。根据Google的文档,此选项使用cron语法。我已经使用crontab guru来验证语法是否正确,尽管您将调度程序放在什么语法似乎并不接受任何语法都没有关系。这是一个已知的错误?以下是我每6个小时运行一次的cron语法。

0 * / 6 * * *

2 个答案:

答案 0 :(得分:3)

形成official documentation

  

选择“自定义”时,需要使用类似Cron的时间规范   例如每3小时。允许的最短时间为十五分钟。   有关其他有效的API,请参见TransferConfig下的计划字段。   值。

期望的格式是“类似Cron”,但不是纯Cron。将您的Cron语法替换为every 6 hours,这将起作用(请注意,这是UTC时间),请参见下面的示例:

enter image description here

答案 1 :(得分:2)

接受的答案没有直接链接到正确的文档,也没有解释有效的选项,只是给出了工具提示中已经提供的少量示例(但它确实回答了所发布的特定问题)

这篇文章试图为那些可能遇到类似问题的人提供一个更一般的答案。

可以直接在here以及相关资料here under "schedule" field information中找到所允许语法的完整说明。

为全面披露,我将在此处直接从该文档中摘录一些内容,以便使此答案可以“独立”。

通常,时间表必须采用以下格式:

[TYPE] [INTERVAL_VALUE] [INTERVAL_SCOPE]

,您必须决定要使用三种不同间隔中的哪一种:

  • 结束时间间隔
  • 开始时间间隔
  • 自定义间隔

间隔类型由您提供的时间表隐式选择。

结束时间间隔

这些是从作业完成时开始的时间间隔。

TYPE

每日间隔必须以“ every”开头

INTERVAL_VALUE

有效时间单位如下:

  • minutesmins
  • hours

INTERVAL_SCOPE

不适用于结束时间间隔。

示例

如果为“ every 5 mins,并且作业在0201处完成,则下一个作业在完成后等待5分钟重新开始,并从0206开始。

开始时间间隔

严格的查询时间表。

TYPE

每日间隔必须以“ every”开头

INTERVAL_VALUE

以下时间单位的一些整数:

  • minutesmins
  • hours

即使使用1作为数量单位也保持不变。

INTERVAL_SCOPE

必须采用以下形式:

from [HH:MM] to [HH:MM],其HH = 00,01,...,23和MM = 00,01,...,59。 要么 synchronized

synchronized重复一个时间间隔,并将其均匀分布在24小时内(例如,像结束时间安排,但将其固定为开始时间)。

与此选项一起提供的[INTERVAL_VALUE]必须是24的因子(1、2、3、4、6、8、12或24),以使每一天都有相同的时间表(否则,您会在第二天收到“溢出”。

示例

示例1:every 5 minutes from 10:00 to 14:00 如果作业从1000开始并花费6分钟,那么它将运行1000、1010、1020,...,因为1005、1015,...由于作业仍在运行而被跳过。

直接报价:

因为作业的开始时间很严格,如果一个作业的实例 运行时间超过定义的时间间隔,然后Cron服务可以 跳过工作。如果出现以下情况,则可以跳过间隔中的单个开始时间 先前的工作尚未完成或超时。

示例2: every 2 hours synchronized 运行0000,0200,0400,...,2200。

自定义间隔

这些用于指定日或月级别的时间间隔,而不能指定次日时间间隔。

TYPE

  • 使用every指定重复间隔:

    • every day 06:00
    • every monday
    • every tuesday
    • ...
    • every sunday
  • 可以使用序号(1st2nd3rd,或,firstsecond,{{1 }},...,最多third31st

    • thirtyfirst
    • 1st,3rd tuesday

请注意,序号和单词可以混合使用。

INTERVAL_VALUE 有效日期是以下各项的任意组合:

  • 2nd, third wednesday of month 09:00monday
  • montuesday
  • tuewednesday
  • wedthursday
  • thufriday
  • frisaturday
  • satsunday
  • sun一周中的所有天

INTERVAL_SCOPE 可以包含

  • day
  • of month [HH:MM],即以逗号分隔的月份列表

请注意,时间必须与任何给定的月份一起给出,of jan,feb,sep,nov [HH:MM]HH的给出如上(分别为00-23和00-59)。如果排除“ of”,则该作业每月运行一次。

允许的值:

  • MMjanuary
  • janfebruary
  • febmarch
  • marapril
  • apr
  • mayjune
  • junjuly
  • julaugust
  • augseptember
  • sepoctober
  • octnovember
  • novdecember
  • dec一年中的所有月份

示例

  • month
  • 2nd monday,thu
  • 1,8,15,22 of month 09:00

请注意,在未明确指定时间(例如1st mon,wednesday,thu of sep,oct,nov 17:00)的情况下,找不到描述工作运行时间的文档。

一般示例

  • 2nd monday,thu->“自定义间隔”
  • second monday,thu->“自定义间隔”
  • third, twentysecond, 30th mon->“自定义间隔”
  • 1 of jan,april,july,oct 00:00->“自定义间隔”
  • 1st monday of sep,oct,nov 09:00->“自定义间隔”
  • 1st,third monday of month 04:00->“自定义间隔”
  • 1,8,15,22 of month 09:00->“自定义间隔”
  • every monday 09:00->“开始时间间隔”
  • every 5 minutes from 10:00 to 14:00->“开始时间间隔”
  • every 1 hours from 08:00 to 16:00->“开始时间间隔”
  • every 2 hours synchronized->“结束时间间隔”
  • every 5 minutes->“结束时间间隔”

重要提示:

  • 输入时间表时会隐式选择时间间隔类型
  • 您不能混合和匹配不同间隔类型的选项。
  • 所有指定时间均为世界标准时间

如上面的介绍中所述,该信息实质上是从现有文档中删除的,但我认为这些信息已经被掩埋了,这个问题值得“独立”参考。