C *中的時間序列建模很簡單,但如果您想添加一些粒度,該怎麼辦?Suss時間序列數據的Cassandra數據模型
我們有一個表,看起來像
CREATE TABLE sales (
c_id text,
purchased_at timestamp,
revenue_cents integer,
PRIMARY KEY (channel_id, purchased_at)
);
現在,我們想選擇在最近365天所做的所有銷售和造粒時間設置爲一個星期。我們可以在前端進行總結,但是就我們選擇的成千上萬行來說,這似乎是一種不良行爲,尤其是在選擇速度最重要的情況下。
一個簡單的例子:
在我們sales
表我們插入以下銷售
INSERT INTO sales (c_id, purchased_at, revenue_cents) VALUES (1, '2014-12-15 07:01:00', 200);
INSERT INTO sales (c_id, purchased_at, revenue_cents) VALUES (1, '2014-12-17 08:01:00', 400);
INSERT INTO sales (c_id, purchased_at, revenue_cents) VALUES (1, '2014-12-24 20:01:00', 400);
INSERT INTO sales (c_id, purchased_at, revenue_cents) VALUES (1, '2014-12-16 10:01:00', 600);
這些可以是幾千銷售的每一天,所以如果我們想作過多少收入是怎麼做的圖表在過去的一年中,用這樣的查詢:
SELECT revenue_cents FROM sales WHERE c_id='1' AND purchased_at > '2014-01-01 00:00:00';
我們會得到像百萬行,這是不夠快。我們也不知道每次銷售時的信息,我們只需要在第225天(或第44周或第6個月)獲得多少信息。因此,如果我們將運行上面的查詢並按月按某種方式進行分組,我們將返回11/12行,並且所有revenue_cents都會被整理。我知道C *無法做到這一點,但不知何故,這可以,對吧?
因此,我的問題是如何實現這個目標?
嗨,感謝您的答覆,但是就我而言,我們仍然會選擇數千行而不是每小時只有幾行,對吧? – 2014-11-22 23:13:30
嗨邁克爾Hirn,抱歉,答案是不夠的。我想我不明白你的問題,並添加了一個例子。希望一些討論導致解決方案。 – catpaws 2014-11-23 01:13:08
感謝您的回覆如此之快,我用一個例子更新了問題,並且現在問題如何變得更加清晰。 – 2014-11-23 10:05:40