【问题标题】: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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 2019-12-02
      • 1970-01-01
      • 2016-03-21
      • 2021-11-15
      • 2019-11-04
      • 2013-12-13
      相关资源
      最近更新 更多