2016-03-08 79 views
0

我有一個像卡桑德拉Count聚合在間隔

CREATE TABLE table (
id text, 
time_stamp timestamp, 
value text, 
PRIMARY KEY (id, time_stamp) 
) WITH CLUSTERING ORDER BY (time_stamp DESC) 

我想要的是獲得任意時間單位的間隔計數的表。示例:

{ "start": "03-08-2016 00:00:00.000", "end": "03-08-2016 12:00:00.000", 
    "interval": 1, "unit":"HOURS"} 

這將是輸入以12小時爲間隔返回計數列表,每1小時計數一次。我想要的結果就像[12,2,44,...,212]。

我知道我可以做多

select count(*) from table where time_stamp > '03-08-2016 00:00:00.000' and time_stamp < '03-08-2016 01:00:00.000' allow filtering; 
select count(*) from table where time_stamp > '03-08-2016 01:00:00.000' and time_stamp < '03-08-2016 02:00:00.000' allow filtering; 

但是,這將是多個查詢。有什麼辦法可以更快地做到這一點?

+0

確實沒有什麼可以做,「更快」,當你在使用'允許過濾「。你可能應該在一天(如:20160308)而不是ID進行分區。那麼你根本不需要'ALLOW FILTERING'。 – Aaron

+0

你認爲像kairosdb這樣的東西會更好用嗎?我需要的唯一聚合功能是count,但kairosdb能夠按照我需要的採樣間隔進行。 – user1738539

+0

在這種情況下,KairosDB可能就是你想要的。 Cassandra無法在這裏完成你想要的任務,而且它也不能很好地處理你當前的數據模型。 – Aaron

回答