Eri*_*ore 8 hadoop hive hql hiveql
如果我在where子句中列出了多个项目如何将结果限制为列表中每个项目的N?
EX:
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
Run Code Online (Sandbox Code Playgroud)
小智 6
听起来你的问题是获得每个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;
Run Code Online (Sandbox Code Playgroud)
这将为每个a_id输出多达10,000个随机选择的行.如果你想要的分组不仅仅是a_id,你可以进一步分区.你也可以在窗口函数中使用order by,有很多例子可以显示其他选项.
| 归档时间: |
|
| 查看次数: |
21888 次 |
| 最近记录: |