在根据用户需求选择需要抽取的字段之外,我们通常需要选择采用全量或者增量的方法进行数据抽取。全量抽取指的是从源系统中将表内数据不加行的筛选,全部抽取;增量抽取指的是只抽取前次抽取之后发生变化或者新增的数据(增量抽取的数据难度较大,要保证数据不能多抽取,漏抽取)。
在源表数据量较大,大部分数据一经入库改动可能较小时一般采用增量抽取的方式;对于表数量较小或者维表这类情况会进行增量抽取。
对表进行增量抽取时,需要较好的判别出新增或者发生变化的数据,在系统设计时,常见的有下面两种方法:
1. 触发器方法: 当需要抽取的表中发生新增、修改、删除时,触发触发器,触发器将数据插入临时表,之后抽取只抽取临时表,抽取时对临时表数据打标记或者删除。
2. 时间戳方法:
在源系统表中增加一个时间戳字段,在用户对这条记录进行增删改查时,更新时间戳,进行数据抽取时使用时间戳来判断这条记录是否要抽取。加时间戳优点为抽取相对简单,但是对源系统依赖较强。
全量抽取出来的表对数据仓库进行更新时,可采用全表删除的方法,优点在于简单快捷,但是如果需要保留修改记录时,需要采用数据快照设计;增量抽取出来的表对数据库进行更新,可以使用merge的方式进行更新操作,这种方法逻辑较复杂,速度较慢,且要求源表主键能够匹配识别。
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交