2016-07-28 47 views
0

是否有可能跟蹤卡桑德拉的「保留」?卡桑德拉,開始和結束時間範圍

基本上,我的大部分查詢都會涉及start_timeend_time,我會在這裏查找所有與此時相交的預訂。

我的模式是這樣的:

CREATE TABLE IF NOT EXISTS events (
    calendar_id text, 
    uid text, 
    start_time timestamp, 
    end_time timestamp, 
    dummy text, 
    payload text, 
    PRIMARY KEY (calendar_id, start_time, end_time, dummy) 
); 

我輸入一些數據,像這樣:

INSERT INTO events 
     (calendar_id, start_time, end_time, uid, dummy, payload) 
     VALUES ('cal1', '2016-07-25T12:30:00-06', '2016-07-25T13:30:00-06', 'event1', '0', '{"description": "test"}'); 

,我想這樣的查詢:

SELECT * FROM events 
     WHERE calendar_id = 'cal1' 
     AND dummy = '0' 
     AND start_time <= '2016-07-25T13:30:00-06' 
     AND end_time >= '2016-07-25T12:00:00-06'; 

我得到這樣的錯誤:

InvalidRequest: code=2200 [Invalid query] message="Clustering column "end_time" cannot be restricted (preceding column "start_time" is restricted by a non-EQ relation)" 

認爲這是可以做到的,因爲它在這太問題似乎如此:Storing time ranges in cassandra

但是,該模式不貼,我們沒有使用pycassa,我似乎無法圖瞭解如何將其映射到CQL。

任何幫助將是偉大的!

回答

1

DataStax網站上有非常好的博客文章,詳細解釋您可以在WHERE子句中使用哪些內容,以及爲什麼限制在適當的位置。檢查here。綜上所述,在最後一組聚類列被限制的情況下允許多列切片限制。