1
我的表中的每一行都有4个值product_id
,user_id
,updated_at
,rating
。我应该如何设计模式以获取Cassandra中每个集群密钥的最后2条记录?
我想创建一个表来找出有多少用户在一定时期内改变rating
。
目前我的模式是这样的:
CREATE TABLE IF NOT EXISTS ratings_by_product (
product_id int,
updated_at timestamp,
user_id int,
rating int,
PRIMARY KEY ((product_id ), updated_at , user_id))
WITH CLUSTERING ORDER BY (updated_at DESC, user_id ASC);
,但我不能想出的办法只能获得在给定的时间窗口中的最后2行,每行用户。
上查询或更改架构任何意见,将不胜感激。
感谢阿龙,问题是我不能够知道哪些用户评价某一个产品,除非我跑了一个额外的查询。另一个问题是在您的表格中,我只能得到给定用户的所有产品评级,而不是所有用户对特定产品的最后2个评级,难道我不能吗? – Harrison
@哈里森对不起,我以为我读到你想给用户的最后2个评级。但是,您希望时间范围内* ALL *用户的最后2个评分...不是吗?是的,单靠CQL是不可能的。这听起来像你需要做一个子查询,使用类似Spark的东西。 – Aaron