You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Databricks的Cron调度:每月首个周一后周三运行任务

解决方案:配置Databricks任务在每月第一个周一后的周三运行

针对你的需求,0 30 6 ? * 4#1这类匹配当月首个周三的Cron表达式,无法排除周三为1号或2号的情况(此时对应的周一属于上月,不满足数据依赖),可以通过以下两种方式解决:

方式一:使用精准匹配的Cron表达式

直接限定日期范围与星期条件,确保触发的周三是当月第一个周一后的日期:

0 30 6 3-9 * 4

逻辑说明:

  • 当月第一个周一的日期范围是1-7号(一周7天,最早的周一不会晚于7号),因此第一个周一后的周三必然在3-9号之间(周一+2天)
  • 3-9限定日期范围,直接排除1号、2号的周三;4代表星期三
  • 该表达式只会在每月3-9号之间的唯一周三触发,恰好对应当月第一个周一后的第三天(周三)

方式二:任务内添加日期校验逻辑(更灵活)

如果担心Cron表达式的边界场景覆盖不全,可以将任务设为每月所有周三触发,再在任务开头添加校验逻辑,仅当当天是目标日期时才执行核心任务:

以Python为例,在Databricks Notebook开头加入以下代码:

import datetime

today = datetime.date.today()
# 计算当月第一个周一
first_day = today.replace(day=1)
# 0=周一,计算距离第一个周一的天数
days_to_first_monday = (0 - first_day.weekday()) % 7
first_monday = first_day + datetime.timedelta(days=days_to_first_monday)
# 目标日期:第一个周一后2天(周三)
target_date = first_monday + datetime.timedelta(days=2)

if today != target_date:
    print("非目标执行日期,任务终止")
    dbutils.notebook.exit("Skipped: Not target date")

# 后续编写你的核心任务逻辑

逻辑说明:

  • 先计算当月第一个周一的日期,再推导出对应的周三
  • 若当天不是目标日期,直接终止任务;否则执行后续逻辑
  • 这种方式无需纠结Cron表达式的边界情况,兼容性更强

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:31:18