删除在数仓里的三种情形
源端删除在数仓要区分三种情形:业务上彻底停用、临时下线、以及源端数据本身被误删。常见做法是标记失效并关闭生效区间,而不是物理删除——保留行才能让历史事实继续关联,同时把删除动作本身记录为一次属性变更,便于审计追溯。
基本信息
| 处理方式 | 标记失效并关闭生效区间 |
|---|---|
| 保留价值 | 历史事实仍可关联到当时的维度成员 |
| 记录内容 | 删除来源、删除时间、操作批次 |
| 例外处理 | 源端误删走数据回滚,不属于维度删除策略 |
| 审计要求 | 金融与合规场景必须可追溯,禁止物理删除 |
典型使用场景
- 客户注销:历史订单仍需关联到该客户,不能删行
- 商品下架:下架后不再销售,但历史销量分析要保留
- 员工离职:历史工时、审批与考核记录仍需关联
- 门店闭店:闭店期间的零销售额是有效业务事实
- 合规审计:任何删除动作都要能说明时间与原因
标记失效而非删除
标记失效而非删除
-- 标记失效:保留行、关闭区间、清当前标志
UPDATE dim_customer
SET is_deleted = 1,
end_date = :batch_dt,
is_current = 0
WHERE customer_id = :id
AND is_current = 1;
-- 下游统计要同时排除已删除成员
-- SELECT count(1) FROM dim_customer WHERE is_current = 1 AND is_deleted = 0;情形与处理
| 情形 | 处理方式 | 理由 |
|---|---|---|
| 业务停用 | 标记失效并关闭区间 | 历史事实仍需关联 |
| 临时下线 | 按属性变更处理,保留行 | 后续可能重新激活 |
| 源端误删 | 回滚上游数据后重跑 | 删除本身是数据缺陷 |
| 合规要求删除 | 匿名化处理 | 移除个人标识但保留关联键 |
物理删除会打断事实与维度的关联:事实行指向的代理键在维度里找不到,关联后直接丢行,聚合数字下滑且难以察觉。
删除标记要参与关联逻辑:若报表只看当前标志而不看删除标记,已停用成员仍会被计入当前有效成员数,指标会偏高。