InfluxDB Continuous Query, работающий с данными всего временного ряда - PullRequest
0 голосов
/ 07 января 2020

Если моя интерпретация верна, в соответствии с документацией, представленной здесь: InfluxDB Downsampling , когда мы понижаем выборку данных, используя Continuous Query, выполняемый каждые 30 минут, он запускается только для предыдущих 30 минут данных.

Соответствующая часть документа:

Используйте инструкцию CREATE CONTINUOUS QUERY для создания CQ:

 CREATE CONTINUOUS QUERY "cq_30m" ON "food_data" BEGIN
  SELECT mean("website") AS "mean_website",mean("phone") AS "mean_phone"
  INTO "a_year"."downsampled_orders"
  FROM "orders"
  GROUP BY time(30m)
END

Этот запрос создает CQ с именем cq_30m в базе данных food_data. cq_30m указывает InfluxDB рассчитать среднее значение за 30 минут для веб-сайта и телефона двух полей в порядках измерений и в DEFAULT RP two_hours. Он также указывает InfluxDB записать эти результаты в измерения downsampled_orders в политике хранения a_year с полевыми ключами mean_website и mean_phone. InfluxDB будет запускать этот запрос каждые 30 минут в течение предыдущих 30 минут с.

Когда я создаю Continuous Query, он фактически выполняется на всем наборе данных, а не на предыдущем 30 минут. У меня такой вопрос: происходит ли это только в первый раз, после чего он запускается за предыдущие 30 минут данных вместо всего набора данных?

Я понимаю, что сам запрос использует GROUP BY time(30m), что означает, что он вернет все данные сгруппированы вместе, но верно ли это для Continuous Query? Если да, то должен ли я включить filter для обработки только последних 30 минут данных в Continuous Query?

1 Ответ

1 голос
/ 09 января 2020

То, что вы описали, является ожидаемой функциональностью.

Расписание и охват Непрерывные запросы работают с данными в реальном времени. Они используют временную метку локального сервера, интервал GROUP BY time () и заданные временные границы базы данных InfluxDB, чтобы определить, когда выполнять и какой временной диапазон охватывать в запросе.

CQ выполняются с тем же интервалом, что и Интервал GROUP BY time () cq_query, и они запускаются в начале заданных временных границ базы данных InfluxDB. Если интервал GROUP BY time () равен одному часу, CQ выполняется в начале каждого часа.

Когда CQ выполняется, он запускает один запрос для диапазона времени между now () и now () минус интервал времени GROUP BY (). Если интервал GROUP BY time () равен одному часу, а текущее время - 17:00, временной диапазон запроса находится в диапазоне от 16:00 до 16: 59,9999999999.

Таким образом, он должен обрабатывать только последние 30 минут.

Хороший момент для первого запуска.

Мне удалось найти фрагмент из старого документа

Заполнение данных в случае, если исходный временной ряд уже содержит данные при создании нового непрерывного запроса с пониженной выборкой, InfluxDB вернется во времени go и рассчитает значения для всех интервалов до настоящего времени. Затем непрерывный запрос будет продолжаться в фоновом режиме для всех текущих и будущих интервалов.

https://influxdbcom.readthedocs.io/en/latest/content/docs/v0.8/api/continuous_queries/#backfilling -data

Что объясняет ваше поведение найдено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...