2

我有一个存储多年历史数据的数据库。我的目标是每隔一段时间重新采样这些数据1m并保存到不同的数据库。我的理解是,使用continous query.

CREATE CONTINUOUS QUERY cq_name ON db_2 
BEGIN 
SELECT last(data_point) AS ldp 
INTO db_2.autogen.data_points 
FROM db.autogen.data_points 
WHERE time > now() - 12w AND time < now() - 10w 
GROUP BY time(1m), * 
END

上面的查询在没有WHERE子句的情况下工作正常,并从创建点重新采样 - 向前。我添加了该WHERE子句以回填特定时间段(12 到 10 周前),但是什么也没发生。

this onethat one之类的帖子中,我了解到可以通过添加INTOandWHERE子句进行回填,但没有任何反应。

为什么会这样,我该如何解决?

4

1 回答 1

3

CQ 中的日期/时间将被忽略。CQ 不能用于回填。

但是,您可以从查询中删除 CQ“包装器”并手动运行它;只记得创建窗口。

CREATE CONTINUOUS QUERY cq_name ON db_2 
BEGIN 
SELECT last(data_point) AS ldp 
INTO db_2.autogen.data_points 
FROM db.autogen.data_points 
GROUP BY time(1m), * 
END

变成:

SELECT last(data_point) AS ldp 
INTO db_2.autogen.data_points 
FROM db.autogen.data_points 
WHERE time > now() - 12w AND time < now() - 10w 
GROUP BY time(1m), * 
于 2020-04-20T12:32:17.357 回答