【问题标题】:Hive QL - Limiting number of rows per each itemHive QL - 限制每个项目的行数
【发布时间】:2012-07-29 19:43:19
【问题描述】:

如果我在 where 子句中列出了多个项目,如何将列表中每个项目的结果限制为 N?

前:

select a_id,b,c, count(*), as sumrequests
from table_name
where
a_id in (1,2,3)
group by a_id,b,c
limit 10000

【问题讨论】:

标签: hadoop hql hive hiveql


【解决方案1】:

听起来您的问题是每个 a_id 获得前 N 个。您可以使用 Hive 11 中引入的窗口函数来执行此操作。类似于:

SELECT a_id, b, c, count(*) as sumrequests
FROM (
    SELECT a_id, b, c, row_number() over (Partition BY a_id) as row
    FROM table_name
    ) rs
WHERE row <= 10000
AND a_id in (1, 2, 3)
GROUP BY a_id, b, c;

这将为每个 a_id 输出多达 10,000 个随机选择的行。如果您希望不仅仅按 a_id 进行分组,则可以进一步对其进行分区。您还可以在窗口函数中使用 order by,有很多示例可以显示其他选项。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
相关资源
最近更新 更多