Hive - 组内前 n 条记录
Hive - top n records within a group
我目前正在使用 Hive,我有一个 table 字段 user_id 和值。我想在每个 user_id 中按降序排列值,然后只为每个 user_id 发出前 100 条记录。这是我尝试使用的代码:
DROP TABLE IF EXISTS mytable2
CREATE TABLE mytable2 AS
SELECT * FROM
(SELECT *, rank (user_id) as rank
FROM
(SELECT * from mytable
DISTRIBUTE BY user_id
SORT BY user_id, value DESC)a )b
WHERE rank<101
ORDER BY rank;
然而,当我 运行 这个查询时,我得到以下错误:
Error while compiling statement: FAILED: SemanticException [Error 10247]: Missing over clause for function : rank [ERROR_STATUS]
仅供参考 - 我的 UserId 是字母数字。
有人可以帮忙吗?
提前致谢。
添加评论
正如错误信息所说,你在使用rank函数时出错,
尝试在排名后添加 over
如下:
....
(SELECT *, rank (user_id) over (order by user_id) as rank
....
有关如何使用排名功能的更多信息,您可以参考此 documentation
我目前正在使用 Hive,我有一个 table 字段 user_id 和值。我想在每个 user_id 中按降序排列值,然后只为每个 user_id 发出前 100 条记录。这是我尝试使用的代码:
DROP TABLE IF EXISTS mytable2
CREATE TABLE mytable2 AS
SELECT * FROM
(SELECT *, rank (user_id) as rank
FROM
(SELECT * from mytable
DISTRIBUTE BY user_id
SORT BY user_id, value DESC)a )b
WHERE rank<101
ORDER BY rank;
然而,当我 运行 这个查询时,我得到以下错误:
Error while compiling statement: FAILED: SemanticException [Error 10247]: Missing over clause for function : rank [ERROR_STATUS]
仅供参考 - 我的 UserId 是字母数字。
有人可以帮忙吗?
提前致谢。
添加评论
正如错误信息所说,你在使用rank函数时出错,
尝试在排名后添加 over
如下:
....
(SELECT *, rank (user_id) over (order by user_id) as rank
....
有关如何使用排名功能的更多信息,您可以参考此 documentation