Hive去重最佳方法

需求

将下表中id去重,并把去重后所有字段输出
在这里插入图片描述
说道去重相信大部分人脑海中第一反应是:

  • distinct
    的确如此,distinct非常适合对于单个字段进行去重的操作,但是对于上面的需求貌似不好处理
    第二反应是:
  • group by
    如果是Mysql操作当然没问题:
SELECT id,month,label FROM t4 GROUP BY id;

结果:
在这里插入图片描述
但是Hive做同样的操作就会报错:

FAILED: SemanticException [Error 10025]: Line 1:42 Expression not in GROUP BY key 'month','label'

Hive去重最佳方法----row_number()

select id,month,flag from (select id,month,flag,row_number() 
over (partition by id order by month desc) as rn from view1) t where t.rn = 1;

结果:

+---+------+----+
| id|  month|flag|
+---+------+----+
|133|201901|   1|
|134|201812|   1|
+---+------+----+

结论

Hive去重,最好使用row_number()函数

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值