Cql 在Cassandra中按时间排序结果

Cql 在Cassandra中按时间排序结果,cql,cassandra-3.0,Cql,Cassandra 3.0,我想从卡桑德拉那里得到一些时间序列数据 我的表格显示在图片上,当我查询时,我得到的数据如下所示: 首先,我看到所有错误的数据,不管我何时将它们插入Cassandra,然后我看到所有真实的数据。 我的问题是:当我插入数据时,如何按时间对数据进行排序或roder排序,以便在插入数据时能够有序地获取数据 当我尝试“按c2从表1中选择c1”时,我得到以下错误“仅当分区键受EQ或IN限制时才支持order by” 多谢各位 假设您的模式类似于: CREATE TABLE table1 ( c1, c2,

我想从卡桑德拉那里得到一些时间序列数据

我的表格显示在图片上,当我查询时,我得到的数据如下所示: 首先,我看到所有错误的数据,不管我何时将它们插入Cassandra,然后我看到所有真实的数据。 我的问题是:当我插入数据时,如何按时间对数据进行排序或roder排序,以便在插入数据时能够有序地获取数据

当我尝试“按c2从表1中选择c1”时,我得到以下错误“仅当分区键受EQ或IN限制时才支持order by”

多谢各位
假设您的模式类似于:

CREATE TABLE table1 (
c1,
c2,
PRIMARY KEY (c1))
这将导致表中有两个分区(c1=true和c1=false)。每个分区将由单个节点管理

初始查询将跨所有分区从表中检索数据。因此,它将转到第一个分区,检索所有的行,然后是第二个分区,检索所有的行,这就是为什么您会看到这样做的结果

Cassandra针对只跨一个分区检索数据进行了优化,因此您应该考虑调整模式以允许这样做-要在查询中使用ORDER BY,您只需要跨一个分区检索数据


根据您的用例,您可以查看数据的装箱或在应用程序中执行排序

亚历克:谢谢你的回答。在我的表中,c1是布尔值,c2是时间戳。但我想我已经找到了解决办法