里程碑为空是正常态
累积快照事实表一行代表一个流程实例,例如订单、工单或理赔案,流程的关键里程碑时间戳放在同一行。流程还没走完时,下游里程碑为空属于正常状态,不是数据质量缺陷,也不该被自动填成零或当前时间。由此得到两条计算规则:耗时类指标只在两端都非空时才计算;同时单独监控「超期仍未完成」的流程数,否则只看平均耗时会因为样本只含已完成流程而系统性偏乐观。
基本信息
| 行粒度 | 一个流程实例一行,随状态更新 |
|---|---|
| 里程碑列 | 下单、支付、发货、签收等时间戳 |
| 空值含义 | 流程尚未走到该节点 |
| 计算规则 | 两端非空才计算耗时 |
| 监控项 | 超期未完成流程数、回填条数 |
典型使用场景
- 计算支付到发货、发货到签收这类分段时效
- 监控在途订单滞留,及时发现卡在某一环节的流程
- 分析流程整体周期,只用两端都完成的样本做同比
- 上游迟到的里程碑回填后,按流程实例重算受影响区块
- 与业务大盘对账,确认未完成流程数与业务系统一致
耗时与滞留
耗时与滞留
-- 只在两端都非空时计算,避免空值被当成零
SELECT order_id,
timestampdiff(hour, pay_ts, ship_ts) AS pay_to_ship_h,
timestampdiff(day, order_ts, sign_ts) AS order_to_sign_d
FROM fact_order_flow
WHERE pay_ts IS NOT NULL AND ship_ts IS NOT NULL;
-- 超期未完成单独监控,与耗时口径分开统计
SELECT count(1) AS overdue_open
FROM fact_order_flow
WHERE sign_ts IS NULL AND order_ts < date_sub(current_date, 7);指标读法
| 指标 | 样本范围 | 读法 |
|---|---|---|
| 平均支付到发货 | 两端非空 | 只代表已完成样本,报表需声明 |
| 整体周期 | 两端非空 | 长尾明显时配合 P90 一起看 |
| 超期未完成数 | 末端为空且已超期 | 上升说明流程滞留,不是数据缺失 |
| 里程碑回填数 | 本次新回填的时间戳 | 突增说明上游数据迟到 |
报表里写「平均时效」必须标注样本是已完成流程,否则未完成流程被排除在样本外,结论偏乐观且跨期不可比。
里程碑回填会改写历史:累积快照按流程实例更新而不是追加,所以要幂等写入并记录更新时间,才能判断某天的数字是否已经被改写。