我正在尝试了解如何删除评级表中重复少于20次的user_id(ID少于20票的ID会使预测混乱)
delete * FROM rating
WHERE COUNT(user_id) <20;
以下是我得到的错误:org.apache.hive.service.cli.HiveSQLException:编译语句时出错:FAILED:SemanticException [Error 10128]:Line 3:6 UDAF'COUNT'尚不支持此位置
答案 0 :(得分:0)
如果您有transactional table,则可以使用以下语句 delete user_id
少于 20
。
hive> delete from rating where user_id in
(select user_id from rating group by user_id having count(user_id) < 20);
答案 1 :(得分:0)
有两个大问题
count
列的groupby使用聚合函数user_id
。 delete
,否则不能使用transactional table.
语句删除记录要从非跨国表中删除记录,您需要使用insert overwrite
语句用所需的记录覆盖表。
语法:
Insert overwrite table select * from <table_name> where <condition>
您的代码应如下所示
INSERT overwrite TABLE rating
SELECT *
FROM rating
WHERE
user_id IN
(
SELECT user_id
FROM rating
GROUP BY(user_id)
HAVING count(user_id) > 20
);