我想在 Databricks 中创建一个 (cron) 计划,在每月第一个星期一之后的星期三运行作业

问题描述 投票:0回答:1

我需要一个 Databricks 作业在每月第一个星期一之后的星期三运行。或者相同:第一个星期一后的两天。
我发现每月第一个星期三的 Cron

0 30 6 ? * 4#1

但是由于该工作依赖于我们在每月第一个星期一生成的数据,因此如果星期三是每月的第一或第二个,则该工作将不起作用。

非常感谢任何帮助!

cron databricks jobs schedule
1个回答
0
投票

Quartz cron 表达式无法处理这样的复杂模式;正如您所指出的,它可以单独完成的最接近的是每月的第 N 个星期一或星期三。

作为解决方法,您可以使用每周三的 cron 计划:

0 0 0 ? * WED
,然后在代码中实现其余的计划逻辑。在 Python 中,这可能看起来像这样:

from datetime import datetime, timedelta

def should_run() -> bool:
    today = datetime.today()
    first = today.replace(day=1)
    days_to_first_monday = (7 - first.weekday() + 0) % 7
    first_monday = first + timedelta(days=days_to_first_monday)
    two_days_after_first_monday = first_monday + timedelta(days=2)
    return today.date() == two_days_after_first_monday.date()

if not should_run():
    dbutils.notebook.exit(f"{datetime.today().date()} is not the Wednesday after the first Monday of the month. Job run will be skipped this time.")
© www.soinside.com 2019 - 2024. All rights reserved.