Cassandra - 按小时汇总时间戳
Cassandra - aggregate timestamp by hour
我有一个 table,时间戳以 15 分钟为间隔。是否可以按 小时 进行聚合或分组,而 load
字段是平均值?
有一个 post on materialized views. You can use it to create a copy of data batched by hour. Then use the average aggregate functions on load. I think 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平均
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)
);
我有一个 table,时间戳以 15 分钟为间隔。是否可以按 小时 进行聚合或分组,而 load
字段是平均值?
有一个 post on materialized views. You can use it to create a copy of data batched by hour. Then use the average aggregate functions on load. I think 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平均
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)
);