在数据开发的日常工作中,我们常常会遇到增量并全量、全量变增量的业务场景,来看看都是如何实现的吧。
1. 增量并全量
这种常常用在etl中,从系统同步数据的时候,考虑全量同步耗资源,所以常常采用增量并全量的方法(前提是确认好系统是否会做物理删除等等适不适合增并全)
思路:全量表的前一天分区full join 增量表的今日最新分区 ,判断主键字段是否在增量表为空,如不为空则取增量表的数据,不为空则取全量表的数据。这样就把增量的数据并到了全量里。
代码框架如下:
tmp为库名,增量表 csdn_lz_i 全量表:csdn_lz_a 主键字段为id
以下为tmp.csdn_lz_a的代码
select
if(t2.id is not null,t2.id,t1.id) as id
,if(t2.id is not null,t2.name,t1.name) as name
,if(t2.id is not null,t2.mark,t1.mark) as mark
from tmp.csdn_lz_a t1
left join tmp.csdn_lz_i t2
on t1.id=t2.id
and t2.dt='{start|yyyyMMdd}'
where t1.dt='{start-1d|yyyyMMdd}'
2.全量变增量
这种常常发生在和下游对接的时候,下游接受大文件吃力的情况下,所以就由数据方每日给增量数据。
思路:增量数据应包含 1.新增数据 2.更新数据 由于可能会存在数据删除,所以可以新增一个有效标识字段,让下游判断。