2017-04-18 37 views
0

据我所知,在卡桑德拉获取最新行的最好方式是创造我的表如下:卡桑德拉CQL:升序选择N“最近”行

CREATE TABLE IF NOT EXISTS data1(
       asset_id int 
       date timestamp, 
       value decimal, 
       PRIMARY KEY ((asset_id), date) 
      ) WITH CLUSTERING ORDER BY (date desc); 

然后选择最近的1000个数据物品通过:

select * from data1 where asset_id = 8 limit 1000; 

客户端需要数据的升序。 服务器端是python。 有没有办法在CQL中而不是在代码中(即python)反转结果?

+0

如果您可以提供第n行的日期,然后你可以订购定制列表 –

+0

ASC正如侧注意,这个话题在这里有趣的讨论:https://issues.apache.org/jira/browse/CASSANDRA-4004 –

+0

我假设你要迭代结果集。难道你不能以相反的顺序迭代吗? – xmas79

回答

1

您是否尝试过使用ORDER BY子句

select * from data1 where asset_id = 8 ORDER BY date asc limit 1000; 

更可以在这里找到的信息: https://docs.datastax.com/en/cql/3.1/cql/cql_using/useColumnsSort.html

+1

这将返回最旧的1000行asc顺序,但希伊希望得到1000顺序最近1000行 –

+0

良好的通话,我误读了她想要完成。在这种情况下,答案是否。 – bechbd

+0

是的,我需要最后输入的1000行。 – Shay