首页/数据/数仓建模速查/累积快照的里程碑缺失处理
维度与事实设计149 条

累积快照的里程碑缺失处理

未完成流程的里程碑为空是正常状态:耗时类指标只在两端都存在时计算,并单独监控「超期未完成」的流程数。

数仓建模速查数据更新于 2026-10-13

里程碑为空是正常态

累积快照事实表一行代表一个流程实例,例如订单、工单或理赔案,流程的关键里程碑时间戳放在同一行。流程还没走完时,下游里程碑为空属于正常状态,不是数据质量缺陷,也不该被自动填成零或当前时间。由此得到两条计算规则:耗时类指标只在两端都非空时才计算;同时单独监控「超期仍未完成」的流程数,否则只看平均耗时会因为样本只含已完成流程而系统性偏乐观。

基本信息

行粒度一个流程实例一行,随状态更新
里程碑列下单、支付、发货、签收等时间戳
空值含义流程尚未走到该节点
计算规则两端非空才计算耗时
监控项超期未完成流程数、回填条数

典型使用场景

  • 计算支付到发货、发货到签收这类分段时效
  • 监控在途订单滞留,及时发现卡在某一环节的流程
  • 分析流程整体周期,只用两端都完成的样本做同比
  • 上游迟到的里程碑回填后,按流程实例重算受影响区块
  • 与业务大盘对账,确认未完成流程数与业务系统一致

耗时与滞留

耗时与滞留
-- 只在两端都非空时计算,避免空值被当成零
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 一起看
超期未完成数末端为空且已超期上升说明流程滞留,不是数据缺失
里程碑回填数本次新回填的时间戳突增说明上游数据迟到
报表里写「平均时效」必须标注样本是已完成流程,否则未完成流程被排除在样本外,结论偏乐观且跨期不可比。
里程碑回填会改写历史:累积快照按流程实例更新而不是追加,所以要幂等写入并记录更新时间,才能判断某天的数字是否已经被改写。

易错点

  • 把空里程碑当零值参与计算,耗时与时效指标虚高
  • 未完成流程被排除在分母外,完成率被系统性放大
  • 回填里程碑不记录更新时间,历史数字被改写却无人知晓
  • 只监控平均耗时不监控超期未完成数,流程滞留长期无人发现

数据来源与参考

  • 数据仓库工具箱:累积快照事实表
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌