是否可以从分区中的每个聚类键Y中选择X记录?

问题描述 投票:1回答:2

给定一个PRIMARY KEY (pkey, ckey_a, ckey_b, etc) WITH CLUSTERING ORDER BY (ckey_a, ckey_b, etc)表,是否可以制作一个select语句来获取每个ckey_b分组的前30条记录从特定的主键/宽行?

cassandra nosql
2个回答
2
投票

您可以使用SELECT * FROM table GROUP BY pkey, ckey_a, ckey_b从ckey_b获取唯一的和ckey_c等。您可以通过分区限制(请参阅alex的答案),但您目前无法限制该组。如果您的查询不经常调用(这很昂贵),您可以创建一个与GROUP BY结合的UDA,以限制组的数量,丢弃其余的。这是非常昂贵的,因为协调器仍然获取所有值,只是在发送回客户端之前过滤掉它们。


2
投票

Cassandra支持使用per partition only语法限制结果数量SELECT * FROM ks.table PER PARTITION LIMIT N;。但是,如果你从PRIMARY KEY (pkey, ckey_a, ckey_b)切换到PRIMARY KEY ((pkey, ckey_a), ckey_b),你可以实现你所需要的,但这取决于你的查询。

© www.soinside.com 2019 - 2024. All rights reserved.