【发布时间】:2019-03-09 08:42:27
【问题描述】:
我有一个带有以下列的表的 cassandra 数据库:
- itemid
- 用户名
- 评分
itemid 和 userid 是主键。我的查询如下所示:
SELECT itemid, avg(rating) as avgRating from mytable GROUP BY itemid order by avgRating asc;
我收到以下错误:
InvalidRequest: 来自服务器的错误:code=2200 [Invalid query] message="仅当分区键受 EQ 或 IN 限制时才支持 ORDER BY。"
我该如何解决这个问题?
我需要按照平均评分排序,这样我才能根据平均评分获得前 10 部电影。
【问题讨论】:
-
在 Cassandra 中,您围绕查询而不是数据对表进行建模。因此,从这个角度来看,如果您的查询将根据平均评分获得前 10 部电影,您将需要一个满足该查询的表。表结构可以非常简单,比如电影 id 和评分,电影 id 作为主键,评分作为聚类列有序 desc。缺点是您需要维护该表(例如定期更新平均评分)。
-
@Horia 一个简单的电影 id 和评级表并不能解决问题。是否可以将平均聚合作为表中的一列?