大数据学习(二十)hive增量表和全量表的相互转换

在数据开发的日常工作中,我们常常会遇到增量并全量、全量变增量的业务场景,来看看都是如何实现的吧。

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.更新数据 由于可能会存在数据删除,所以可以新增一个有效标识字段,让下游判断。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值