一、增量加载的分类
- 更新、插入:Overwrite
- 删除、更新、插入:Delete and Overwrite
二、删除情况下的更新策略
- 在数据块中包含需要删除的数据。
- 指定删除条件,独立处理,需要考虑参数如何计算、存储。
2.1. 比较符:>= > = < <= in like 等。
2.2 值类型:数组、基础类型。
三、一些心得和经验
最早的时候,初步接触增量加载是通过SSIS接触的,使用过一个方案,流程如下:
- 将本次执行时间定义为时间戳,从数据库读入上次时间戳
- 加载上次时间戳到本次时间戳的数据,使用merge into语句来处理insert、update、delete
- 本次时间戳改为上次时间戳,存入数据库
这个方案其实是存在问题的,主要有两种情况:
- 异常管控比较低级,出现问题只能自己手动去处理失败的ETL,无法保证异常情况下的数据一致性,异常发生下一次执行数据不出问题才是重要的。
- ETL对生产的影响。
一个好的增量方案,应该能够做数据处理时保证不影响生产,且能有异常发生下较好的数据一致性保证策略,这才是重要的事情。
- 尽量使用备表替换的策略。
- 增量尽量不要使用数据库存储的时间戳,而要依靠入库的数据进行开始节点判断的策略。
- 在前两者的基础上对最终进行生产替换的异常做详细分类,并做相应的处理方案。
- 所有的目标都是数据一致性、增量加载方法化。