irpas技术客

hive sql 的三种去重方法总结_maligebilaowang_hive sql 去重

irpas 1974

sql字段去重

在从数据库中取数据或者进行数据清洗的过程中,经常会遇到去重复问题,常用的去重方法包括三种方式。接下来主要介绍常用的三种方式以及最优方法。

distinctgroup byrow_number() over() 需求分析

对下表中uid字段去重,并且把去重后所有字段输出。

distinct方法 ditinct方法适合于单字段去重,但是单字段去重还要保留其他字段数据,就无法完成了;distinct对NULL是不进行过滤的,即返回的结果中是包含NULL值的;distinct应用到多个字段的时候,distinct必须放在开头,其应用的范围是其后面的所有字段 group by 方法 对group by 后面所有字段去重,并不能只对一列去重;sql语句写成只对一列去重,保留其他字段,在hive上会报错

报错结果如下:

row_number() over()(该方法是hive sql去重的最佳方法) ROW_Number() over (partition by id order by time DESC) 给分组后的每个id加一列按某一字段倒叙排序的rank值,取rank=1 SELECT aa.uid,aa.org_name,aa.addr_no,row_number() over (partition by aa.uid order BY aa.addr_no) as rn FROM stg.t_018_doc_address_spec_organization AS aa ) AS t WHERE t.rn =1

上述方法去重结果如下:


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #hive #SQL #去重 #DISTINCTGROUP #byrow_number