@@四月 2021-05-27 09:43 采纳率: 100%
浏览 508
已采纳

面试题目:ETL 什么时候用全量抽取,什么时候用增量抽取?

在项目中做抽取时,什么时候用全量,什么时候用增量

  • 写回答

1条回答 默认 最新

  • 小P聊技术 2021-05-27 09:56
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable