Как засыпать непрерывный запрос в InfluxDB? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть БД, в которой хранятся исторические данные за годы. Моя цель - повторно сэмплировать эти данные с интервалом 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, чтобы заполнить заданный c период времени (между 12 и 10 неделями go), однако ничего не произошло.

Из сообщений типа this и этого , я понимаю, что обратная засыпка возможна путем добавления предложений INTO и WHERE, но ничего не происходит.

Почему это так и как я могу это исправить?

1 Ответ

1 голос
/ 20 апреля 2020

Дата / Время в CQ игнорируются. CQ нельзя использовать для обратной засыпки.

Однако вы можете удалить «обертку» CQ из вашего запроса и запустить ее вручную; просто не забудьте создать windows.

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), * 
...