问题描述
我试图理解完整表 vs 增量表 vs 增量表的概念,原则上为了简化(更快的加载过程)每天的 ETL 加载,使用增量表是一个好习惯
完整表格
增量表
增量表
我在某处读过一些
使用增量加载来移动数据可以缩短 ETL 流程的运行时间并降低出现问题时的风险
有人可以帮我理解这个概念吗?
解决方法
- full,顾名思义,加载一切,整个源数据文件
- incremental - 或 delta (它们是同义词,不是两种不同的类型) - 意味着您只加载尚未加载的数据。这通常意味着已记录上次加载的时间。下一个加载会话加载在上次成功加载时间戳之后创建的数据
截至
- “缩短运行时间”:显然,如果您不必加载所有内容而只加载缺少的内容,则需要更少的时间
- “降低风险”:您不会弄乱已经加载的数据,它会保留在数据库中。如果出现问题,当前加载会话就会出错,因此您可以放弃所做的更改并重新开始
好吧,您没有为您的报价提供参考,但根据我的经验,它只有 50% 正确。
我读过:
使用增量加载来移动数据可以缩短 ETL 流程的运行时间 但会增加 出现问题的风险。 >
问题在于错误累积。如果您在满载中得到损坏或不完整的数据,您可以在下一次加载时将它们清除掉,并且很有可能新的加载是有效的。
与增量加载相反,错误仍然存在并且可以在时间内累积。
因此好的做法在实施增量加载时执行定期检查(每天、每月等),确保源和目标中的完整快照相同.
我的经验法则是 - 仅当满载不可行(即对于事务表和大维度)时才选择增量加载 .