首页/数据/数仓建模速查/维表技术字段规范
维度与事实设计149 条

维表技术字段规范

维表统一携带审计列:dw_create_time、dw_update_time、etl_batch、src_system;排障时能定位到批次与来源。

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

维表技术字段规范是什么

维表技术字段规范指每张维表统一携带审计列:dw_create_time(首次入库时间)、dw_update_time(最近一次变更时间)、etl_batch(写入批次号)、src_system(来源系统)。它们不参与业务分析,但承担排障与回溯:出问题时要能立刻回答「这批数据哪天写的、来自哪个系统、什么时候第一次进的仓」。没有批次号时,修复范围只能靠猜。

基本信息

必需列dw_create_time、dw_update_time、etl_batch、src_system
可选列is_deleted、dw_owner、batch_id_prev
批次语义每次调度写入记录本批编号,便于定位与回退
来源语义标记该行来自哪个系统,配合合并规则
使用范围全部维表统一,不区分层级与业务域

典型使用场景

  • 故障定位:某天维表属性错误,先按 etl_batch 圈定写入批次
  • 影响评估:按批次统计受影响行数与下游表,界定修复范围
  • 回退执行:确定批次后可按批次定向重跑,而非全表重建
  • 来源核对:按 src_system 统计各来源行数,验证合并是否完整
  • 冷启动判断:dw_create_time 用于识别新入仓成员,做增量对账
  • 审计问询:被问某属性何时进入数仓,dw_create_time 直接作答

审计列与排障

审计列与排障
-- 维表统一携带的技术列
dw_create_time timestamp  -- 首次入库时间
dw_update_time timestamp  -- 最近一次变更时间
etl_batch      string     -- 写入批次号,如 20261013_01
src_system     string     -- 来源系统,如 mdm / crm / erp

-- 排障:按批次圈定某天写入的记录
SELECT etl_batch, count(1) AS cnt
FROM   dim_user
WHERE  dw_update_time >= '2026-10-13 00:00:00'
  AND  dw_update_time <  '2026-10-14 00:00:00'
GROUP  BY etl_batch;

-- 来源核对:各来源当前有效行数
SELECT src_system, count(1) FROM dim_user
WHERE  is_current = 1 GROUP BY src_system;

审计列用途

列回填时机用途
dw_create_time首次插入时写入,之后不变识别新成员、审计问询
dw_update_time每次更新时改写定位变更时点,圈定修复范围
etl_batch每次调度写入本批编号按批次回退与影响评估
src_system入库时按来源打标来源核对与冲突排查
is_current随版本变化维护当前行定位,需唯一性校验
审计列是排障与回溯的基础设施,不是可选项。特别是 etl_batch:有了它,误写数据可以定向回退;没有它,只能按时间范围或全表重建,在生产事故里的时间成本差别是几十分钟与几天。

易错点

  • 无批次号:问题数据无法定位写入时间,修复范围只能靠猜
  • dw_update_time 被覆盖式重算:历史变更时点全部变成当前时间,失去回溯价值
  • 审计列格式不统一(有的带时区有的不带):跨表比对时点永远对不上
  • 批次号只在部分表存在:排障时链路中段断档,无法串起上下游
  • 把审计列当业务字段使用:报表按更新批次分组,把技术信息当成了业务维度

数据来源与参考

  • 数仓规范实践:技术字段
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌