为什么需要时间表达式
数据中台项目中,需要定时执行规则来进行数据质量的检核,这个定时的规则通常是用户在后台进行配置的。
定时任务时间表达式规则
时间表达式组件一般由秒、分、时、日、月、周(星期几)、年7个域组成
对应的生成的表达式也是由 s、m、h、d、M、w、y 7个值由空格拼接生成
各个域的含义和可选值:
域 | 取值 | 特殊字符 |
---|---|---|
1.秒 | 0-59 | , - / * |
2.分 | 0-59 | , - / * |
3.时 | 0-23 | , - / * |
4.日 | 1-31 | , - / * ? L W |
5.月 | 1-12 | , - / * |
6.周 | 1-7或SUN-SAT | , - / * ? L |
7.年 | 1970-2099 | , - / * |
特殊字符的含义
* : 表示匹配该域的任意值。比如Minutes域使用*,就表示每分钟都会触发。
- : 表示范围。比如Minutes域使用 10-20,就表示从10分钟到20分钟每分钟都会触发一次。
, : 表示列出枚举值。比如Minutes域使用1,3,就表示1分钟和3分钟都会触发一次。
/ : 表示间隔时间触发(开始时间/时间间隔)。例如在Minutes域使用 5/10,就表示从第5分钟开始,每隔10分钟触发一次。
? : 表示不指定值。简单理解就是忽略该字段的值,直接根据另一个字段的值触发执行。
# : 表示该月第n个星期x(x#n),仅用星期域。如:星期:6#3,表示该月的第三个星期五。
L : 表示最后,是单词"last"的缩写(最后一天或最后一个星期几);仅出现在日和星期的域中。用在日则表示该月的最后一天,用在星期则表示该月的最后一个星期。如:星期域上的值为5L,则表示该月最后一个星期的星期四。在使用'L'时,不要指定列表','或范围'-',否则易导致出现意料之外的结果。
W: 仅用在日的域中,表示距离当月给定日期最近的工作日(周一到周五),是单词"weekday"的缩写。