☰
数仓方法论(五):历史与增量——让变化进入数仓而不丢失解释
2026/11/3 19:32:27 网站建设 项目流程

一、历史与增量处理方法论

历史与增量处理的作用,是让新增、更正和迟到的数据持续进入数仓,同时保留业务需要的历史解释。

例如,商品本月改变分类,用户可能仍希望按上月分类复盘;上周退款今天才到仓,用户又需要修订上周的活动结果。两者都涉及变化,但需要处理的对象和时间不同。

因此,先确定希望保留什么历史,再识别变化怎样到达,最后决定更新哪些记录与派生结果。《数据仓库工具箱》分别讨论SCD、迟到数据及历史与增量加载,本文将其按依赖关系串联,不将其冒称为原书同名步骤。

1. 先确定历史含义,再选择保存策略

历史策略首先回答:属性改变后,过去的事实应该按当时状态解释,还是按最新状态重新观察?这个选择决定是否需要保存多个版本。

原书在缓慢变化维度中介绍类型1重写、类型2增加新行等方法。覆盖可以反映当前属性;增加版本可以保留不同有效时期的背景。选择依据是属性变化的含义和分析用途。

判断时,需要区分业务真实变化与原记录错误。真实改类可能需要保留前后版本;发现原分类填错,则可能要求纠正受影响的历史。不能仅凭“字段变了”就采用同一规则。

确定后,应说明各属性怎样更新、何时生效,以及事实怎样找到适用版本。若有效期重叠或存在空档,就无法唯一解释某个业务时点,需要先处理版本规则。

2. 区分发生、更正生效与到达时间

业务发生时间说明事件属于何时,入仓时间说明数仓何时得知。若来源更正过去记录,还可能需要说明更正何时应生效。这些含义不能用一个日期字段替代。

因此,收到记录后先判断它是新事件、已知事件的新版本,还是重复传输。需要依据事件身份、版本或来源顺序作判断,不能只按到达日期或金额识别。

对迟到事实,还应按所需历史视角匹配维度;对缺失维度,决定等待、使用可识别的临时成员或后续修正。不同选择影响时效和历史解释,必须留下规则。

这样才能把“今天才知道”与“今天发生”区分,并说明某次发布为何尚未包含后来到达的证据。

3. 从历史基线接续增量,识别新增与变化

首次历史加载建立起点,增量则接续来源后续变化。两者之间需要明确边界,否则边界附近的记录可能遗漏或重复。

先核查来源怎样表达新增、修改和删除,再选择识别方式。时间戳必须覆盖需要的变化;快照比较必须明确比较范围;CDC需要理解其顺序和重放条件。

判断方案是否足够,应列出来源允许的变化,逐一检查是否能够被观察到。若旧订单会被更正,只按创建日期读取当天记录,就无法发现这些修改。

接续时还要保留必要身份和位置,使重复读取能被识别,缺失变化能被发现。具体机制由来源与引擎决定,不能把某个字段名当作完整增量方案。

4. 从变化对象推导影响范围,再更新和验证

发现变化后,先判断哪些结果依赖该对象。退款金额更正会影响退款明细,也可能影响原订单净额、活动汇总及已发布报表。

沿依赖关系确定受影响对象和期间,再选择局部更新或重算。若仅更新来源明细,汇总不会自动正确;若只刷新当天分区,也可能漏掉历史归属结果。

重复处理同一输入不应产生额外业务效果。这是本文采用的幂等判断:检查目标是否根据事件身份更新或替换,而不是每次重复追加。变化涉及多个层次时,还要确认下游同步完成。

在原始历史足够且定义相同的条件下,可将增量结果与参考重建结果比较,定位遗漏、重复或历史关联错误。若没有来源变更历史,则应说明无法还原的部分。

二、实际的例子

教学输入:订单周一支付135元,周三成功退款45元,退款记录周五才到仓。业务希望观察这批订单截至周三结束的净支付额。

首先,观察截止按业务发生时间判断,所以这笔周三成功退款应计入。其次,周四发布时仓库尚未收到记录,只能根据当时已知数据计算,不能把135元称为最终完整答案。

发布状态已知证据同一观察截止下的结果
周四发布支付135元,退款尚未到仓135元,需说明完整性限制
周五退款到仓后修订支付135元、截止前退款45元90元

更新时,先按退款身份保存记录,再找到原订单及活动归属,修订受影响的结果。不能只把45元记录在周五,就认为原活动已经修正。

同一退款再次到达时,结果仍应为90元。由此形成可追溯的业务时间、到达信息和结果修订。发布版本是本文为解释该案例采用的工程扩展,不是原书规定的一套字段。

三、快速复习

方法主线:确定历史解释→区分时间和变化身份→衔接基线与增量→推导影响范围→验证更新与重放。

判断问题需要的依据
为什么保留版本?业务需要按什么历史视角分析
变化是否识别完整?来源怎样表达新增、更正和删除
哪些结果需要修订?变化对象的归属及下游依赖
重复处理是否可靠?同一身份不重复产生业务效果
历史能否还原?所需来源和版本信息是否实际保留

原书入口:《数据仓库工具箱》第3版2.5,PDF57—58页;19.5.8迟到数据,PDF360页起;20.3历史加载,PDF378页起;20.4增量,PDF385页起。

SCD、迟到处理及历史/增量区分依据原书;上述串联、幂等检查和结果版本解释为实践归纳。这里仅给出教学预期,不声称已完成实际增量验证。

返回系列总览:从业务问题到可信数据交付。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询