2017-04-18 60 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