【问题标题】:Finding top n rows for each partition in Hive查找 Hive 中每个分区的前 n 行
【发布时间】:2018-03-12 03:15:57
【问题描述】:
我尝试了类似的东西
select * from table_name
group by column1
Order by column2 desc;
但它不起作用,因为您应该将所有选定的列放在 group by 语句中。
有没有类似的东西
for each partition
*do something*
在蜂巢中?
谢谢。
编辑:column1 是分区所在的列
【问题讨论】:
标签:
hive
hql
partition-by
【解决方案1】:
对于这种情况,我们通常使用ROW_NUMBER()。
SELECT a.col1
,a.col2
,a.col3 --Other columns
FROM (
SELECT t.*
,ROW_NUMBER() OVER ( PARTITION BY column1
ORDER BY column2 DESC
) AS rn
FROM table_name t ) a
WHERE rn >= n -- filter based on rn to get top n rows for each partition.