Cassandra - 按小时汇总时间戳

时间:2016-11-04 16:04:47

标签: cassandra cql

我有一个时间戳为15分钟的表格。是否可以按小时汇总或分组,load字段是平均值?

enter image description here

1 个答案:

答案 0 :(得分:1)

在物化视图上有一个post。您可以使用它来创建按小时批量处理的数据副本。然后在加载时使用平均聚合函数。我认为CASSANDRA-11871是你所期待的,它在group by中的所有依赖性最近已经完成,但还没有完成。

有点只是猜测你的架构但是(免责声明没有真正测试过):

CREATE TABLE load (
 ref_equip text,
 ptd_assoc text,
 date timestamp,
 date_hour bigint,
 load float,
 PRIMARY KEY ((ref_equip, ptd_assoc), date)
);

CREATE MATERIALIZED VIEW load_by_hour AS 
SELECT * FROM load 
WHERE ref_equip IS NOT NULL AND ptd_assoc IS NOT NULL
PRIMARY KEY ((ref_equip, ptd_assoc), date_hour, date);

其中date_hour只是小时分辨率的时间戳,意味着在插入时除以1000 * 60 * 60(epoc为ms)。然后可以选择平均值

SELECT avg(load) FROM load_by_hour WHERE ref_equip='blarg' AND ptd_assoc='blargy' AND date_hour = 410632;

或者更开始的事情是存储数据,按小时划分:

CREATE TABLE load (
 ref_equip text,
 ptd_assoc text,
 date timestamp,
 date_hour bigint,
 load float,
 PRIMARY KEY ((ref_equip, ptd_assoc, date_hour), date)
);