当前位置:   article > 正文

Hive去重最佳方法

hive去重

需求

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

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

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

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

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;
  • 1
  • 2

结果:

+---+------+----+
| id|  month|flag|
+---+------+----+
|133|201901|   1|
|134|201812|   1|
+---+------+----+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结论

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/561449
推荐阅读
相关标签
  

闽ICP备14008679号