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

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

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

  • 写回答

1条回答 默认 最新

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

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

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

报告相同问题?

悬赏问题

  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗