所以我的表格看起来像是:
CREATE TABLE schema.table (
partitionkey int,
clusterkey text,
value bigint,
PRIMARY KEY ((partitionkey), clusterkey)
);
我们依靠此表格按clusterkey
分页进行正确排序
问题是:当从cassandra返回结果时,看起来它们是根据它们的ASCII值而不是逻辑A-Z排序进行排序的。 - 对于查看它的人来说,这是编程有意义的,但不是逻辑上的。
所以查询:
SELECT clusterkey FROM schema.table WHERE partitionkey = 1 ORDER BY clusterkey ASC;
得到左边的结果,当我期待像右边的那样
---------(current)--- ----------(wanted)---
clusterkey clusterkey
--------------------- ---------------------
Other capital a should be top
Starts capital1 Other capital
Starts capital2 Starts capital1
Starts capital3 starts capital1
Starts capital4 Starts capital2
YYYYYYYYYYYY Starts capital3
ZZZZZZZZZZZZ Starts capital4
a should be top YYYYYYYYYYYY
starts capital1 ZZZZZZZZZZZZ
zzzzzzzzzzzz zzzzzzzzzzzz
据我所知,我们可以将数据更改为全部小写/大写以正确排序,但这会改变数据的外观。 - 绝对不需要。
是否可以选择更改当前群集顺序的方法?
- 或其他逻辑排序方式?
答案 0 :(得分:1)
不,除了使聚类列更低/更高外,没有办法让它排序不区分大小写。如果您担心数据的外观,您可以始终在附加列中保留未修改的文本(是的,它将复制数据),并将其显示给用户,而不是此群集列。
答案 1 :(得分:1)
群集列按字典顺序排序,这意味着大写字符优先于小写。
Cassandra在当前版本中不支持不区分大小写的排序,但Cassandra社区Provide a locale/collation-aware text comparator要求增强功能到目前为止它没有得到开发者社区的太多关注。