hive常见问题

mac2025-12-21  10

1.hive几种去重方式

Distinct用法:对select 后面所有字段去重,并不能只对一列去重 (1) 当distinct应用到多个字段的时候,distinct必须放在开头,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且distinct只能放到所有字段的前面 (2) distinct对NULL是不进行过滤的,即返回的结果中是包含NULL值的 (3) 聚合函数中的DISTINCT,如 COUNT( ) 会过滤掉为NULL 的项group by用法:对group by 后面所有字段去重,并不能只对一列去重。 select 去重字段 from 表名 group by 去重字段 ROW_Number() over()窗口函数 注意:ROW_Number() over (partition by id order by time DESC) 给每个id加一列按时间倒叙的rank值,取rank=1 select m.id,m.gender,m.age,m.rank from (select id,gender,age,ROW_Number() over(partition by id order by id) rank from temp.control_201804to201806 where id!='NA' and gender!='' or age!='' ) m where m.rank=1 使用group_concat函数 select group_concat(distinct 去重字段) from 表名 group by 去重字段
最新回复(0)