调度说明
1、调度概览
本平台调度系统基于周期调度框架构建,以“任务 → 实例 → DAG”为核心模型,实现任务可预期、可观测、可运维的统一调度能力。
调度系统主要解决以下问题:
-
明确每日/每周期需要执行的任务清单
-
明确任务依赖关系,支持自动识别与人工干预
-
支持单日多次更新、补数、重跑等运维场景
2、核心概念说明
1. 任务与实例
-
任务(Task):调度配置的逻辑单元,如数据源表任务、普通物化任务、加速物化任务
-
实例(Instance):任务在某一个定时时间或业务日期下生成的具体执行单元
一个任务在一天内可能生成一个或多个实例(如分钟 / 小时周期)。
2. 周期类型
支持以下调度周期:
-
分钟
-
小时
-
日
-
周
-
月
-
年
不同周期的任务,实例生成规则不同:
-
分钟 / 小时:一天内可能生成多个实例
-
日及以上:每天生成一个实例(非调度日为空跑实例)
3、时间体系说明
1. 定时时间
定时时间来源于任务的时间属性配置:
-
日 / 周 / 月 / 年:
date_trunc(定时时间, DAY) -
小时:
date_trunc(定时时间, HOUR) -
分钟:
date_trunc(定时时间, MINUTE)
2. 业务日期
-
周期实例:由定时时间推导
-
日周期:业务日期 = 定时时间 - 1 日
-
小时周期:业务日期 = 定时时间 - 1 小时
-
分钟周期:业务日期 = 定时时间 - 1 分钟
-
-
补数实例:由用户在提交补数时指定
4、实例状态流转
1. 自然状态流转

2. 人工干预状态
-
置为成功:
-
允许状态:未运行 / 等待运行 / 失败 / 暂停
-
用于跳过当前实例,继续下游执行
-
-
暂停:
-
允许状态:未运行 / 等待运行 / 运行中
-
恢复后等价于重跑实例
-
5、任务类型说明
1. 数据源表任务

-
用于描述数据源更新事件
-
支持:
-
开启 / 关闭调度
-
周期调度
-
外部 API 触发更新
-
数据源表任务是下游物化任务的重要依赖节点。
2. 普通物化任务
-
用于生成结果表供外部系统或查询使用
-
特点:
-
不参与查询改写
-
支持全量 / 分区 / 合并更新
-
3. 加速物化任务
-
用于查询加速
-
特点:
-
可被查询命中
-
不支持追加类更新(保证命中正确性)
-
4. 外挂物化任务
- 用于已有外部物化结果的注册
6、调度依赖说明
调度依赖规则一览
| 当前实例周期 | 可依赖实例周期 | 依赖生效条件 | 依赖选择规则 |
| 分钟 | 分钟 | 同一自然小时定时时间 ≤ 当前实例 | 选择最近的一条 |
| 分钟 | 小时 | 同一自然小时定时时间 ≤ 当前实例 | 唯一满足则依赖 |
| 分钟 | 日 / 周 / 月 / 年 | 同一自然日定时时间 ≤ 当前实例 | 唯一满足则依赖 |
| 小时 | 分钟 | 同一自然小时 | 选择该小时内最后一个 |
| 小时 | 小时 | 同一自然日定时时间 ≤ 当前实例 | 选择最近的一条 |
| 小时 | 日 / 周 / 月 / 年 | 同一自然日定时时间 ≤ 当前实例 | 唯一满足则依赖 |
| 日 | 分钟 / 小时 | 同一自然日 | 选择当天最后一个 |
| 日 | 日 / 周 / 月 / 年 | 同一自然日 | 唯一满足则依赖 |