首页/数据/数仓建模速查/用时间戳行替代状态标签
维度与事实设计149 条

用时间戳行替代状态标签

订单状态不要存一列 state 原地覆盖,而是按里程碑追加带时间戳的事实行;取最新状态用最新时间戳行,历史演进可分析。

数仓建模速查数据更新于 2026-10-12
形态事件行+时间戳
当前状态取 max(ts)
注意去重与幂等

取当前状态

取当前状态
SELECT order_id, state
FROM (
  SELECT order_id, state, row_number() over (partition by order_id order by ts desc) rn
  FROM fact_order_state
) t WHERE rn = 1;
同状态重复上报需按 (order_id, state, ts) 去重,避免状态时长统计失真。

易错点

  • 状态原地更新覆盖,无法回看状态轨迹
  • 重复上报未去重,状态时长被重复累计

数据来源与参考

  • 事实表设计实践:状态变更
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌