首页 > 代码库 > 数据仓库之 - 增量数据处理

数据仓库之 - 增量数据处理

我们知道所谓ETL步骤其实就是把数据从源系统加载到数据仓库或数据集市的操作,并在此过程中实现数据的清洗及转换。除了数据的清洗转换之外,一次ETL的过程中另一个十分重要的部分就是:本次抽取能不能直接定位到上次数据处理后变动的数据,即增量抽取(IncrementalLoad)

取决于源系统的结构,增量抽取有多种实现方式:

1.      源系统具有时间戳

a)      如果源系统有时间戳,并且没有物理删除操作而是使用软删除,那么我们可以直接使用时间戳定位到新增更新以及删除的数据

b)      如果源系统具有时间戳但是会发生物理删除操作,那么我们就只能定位到新增及更新的数据,对于删除的数据则无能为力,那么我们就只能使用下面介绍的方法来实现增量

2.      源系统没有时间戳

a)      如果源系统没有时间戳,并且不允许在源系统上使用CDCtrigger等捕获变更数据的方式,那么在数据从数据源加载到Staging表的步骤我们无法使用增量抽取,但是我们可以在Transformation表中添加时间戳,这样在Transformation步骤通过数据对比的方式来识别出增、删、改的数据来填充或更改时间戳,这样在数据从Transformation表加载到数据仓库的时候可以实现增量处理。这样的好处是:在Loading步骤需要处理的数据量很少,对DWH的锁需求就少,因为对于使用数据仓库的业务用户影响就小。

 

wKiom1RhokTR1QArAACEqXWFsv0039.jpg

b) 如果源系统允许开启CDC,那么另一种简单的办法就是结合使用SQLServerCDC功能以及SSISCDC控件来实现数据增量处理


数据仓库之 - 增量数据处理