首页 > 代码库 > 数据仓库之 - 增量数据处理
数据仓库之 - 增量数据处理
我们知道所谓ETL步骤其实就是把数据从源系统加载到数据仓库或数据集市的操作,并在此过程中实现数据的清洗及转换。除了数据的清洗转换之外,一次ETL的过程中另一个十分重要的部分就是:本次抽取能不能直接定位到上次数据处理后变动的数据,即增量抽取(IncrementalLoad)。
取决于源系统的结构,增量抽取有多种实现方式:
1. 源系统具有时间戳
a) 如果源系统有时间戳,并且没有物理删除操作而是使用软删除,那么我们可以直接使用时间戳定位到新增、更新以及删除的数据
b) 如果源系统具有时间戳但是会发生物理删除操作,那么我们就只能定位到新增及更新的数据,对于删除的数据则无能为力,那么我们就只能使用下面介绍的方法来实现增量
2. 源系统没有时间戳
a) 如果源系统没有时间戳,并且不允许在源系统上使用CDC或trigger等捕获变更数据的方式,那么在数据从数据源加载到Staging表的步骤我们无法使用增量抽取,但是我们可以在Transformation表中添加时间戳,这样在Transformation步骤通过数据对比的方式来识别出增、删、改的数据来填充或更改时间戳,这样在数据从Transformation表加载到数据仓库的时候可以实现增量处理。这样的好处是:在Loading步骤需要处理的数据量很少,对DWH的锁需求就少,因为对于使用数据仓库的业务用户影响就小。
b) 如果源系统允许开启CDC,那么另一种简单的办法就是结合使用SQLServer的CDC功能以及SSIS的CDC控件来实现数据增量处理
数据仓库之 - 增量数据处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。