hive 查出A(每天记录)表有而B(历史)表没有的数据(适用于增量添加数据)

主宰稳场 提交于 2019-12-10 19:20:21

问题描述

有的表每天会记录服务器当天的记录,每天会收集当天记录到大数据仓库当中,作为数据工作者的我们,不仅要保证不漏掉历史记录,而且要避免冗余存储,我们把每天都传过来的日数据表称为A表,存储所有记录的表称为B表。

插入新增或者有变化的sql

insert into table history_table 
select A.col1,A.col2,A.col3 .... ,A. colN from 
(   select col1,col2,col..... 
	from daily_table)  A 
left outer joinselect col1,col2,col..... 
	from history_table ) B
on A.col1=B.col1 and A.col2=B.col2 and ....
where B.col1 is null

对上述sql的解释

只考察部分字段有区别才视为新纪录的话,join 的on 条件里面省去不考察的字段,
where 条件只要任意考察字段为空 就能选出新纪录,因为有一个条件不一样, 右表所有字段都为NULL。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!