Influxdb GROUP BY time агрегирует данные о неправильных временных интервалах или сегментах - PullRequest
0 голосов
/ 22 сентября 2018

В последнее время мы столкнулись с очень раздражающей проблемой, связанной со временем GROUP BY InfluxDB.Оказывается, что если мы пытаемся агрегировать данные для каждых 30 дней, InfluxDB агрегирует наши данные по неожиданным временным интервалам.

Например, следующий запрос:

SELECT COUNT(user_id) AS result FROM measurement1 WHERE time > '2017-12-31 23:59:59' AND time < '2019-01-01 23:59:59' GROUP BY time(30d) FILL(0);

Тогда мы получим следующееОтвет (время эпохи в миллис):

time                result
----                ------
1513728000000000000 0
1516320000000000000 0
1518912000000000000 0
1521504000000000000 0
1524096000000000000 0
1526688000000000000 0
1529280000000000000 0
1531872000000000000 0
1534464000000000000 4
1537056000000000000 1
1539648000000000000 0
1542240000000000000 0
1544832000000000000 0

Итак, после преобразования времени эпохи в нормальные даты мы обнаруживаем, что возвращаемые интервалы были в 20/12/17, 19/01/18 до15/12/18 (каждые 30 дней).

Как я понял, точки агрегации предварительно определяются с помощью притока по первому значению во времени (время GROUP BY (значение)).Это даже упоминалось в документации, но в гораздо меньшем масштабе - «заданная граница времени».Однако в этих примерах речь шла о минутах и ​​однодневном агрегировании, и его легко было исправить с помощью параметра смещения, поскольку интервалы агрегации по умолчанию для этих шкал были в полночь.

Это круто, но здесь мы имеем дело с несколькими днями.В нашем случае мы не можем играть с параметром смещения, потому что мы не можем знать временные интервалы, возвращаемые GROUP BY.

Существует ли какой-либо источник / формула / алгоритм или что-нибудь еще, чтобы помочь нам в прогнозировании этих временных интервалов, чтобы мы могли их сместить?Если такого нет, то как мы можем преодолеть эту проблему?

Я думаю, причина всего этого - производительность, но очень странно, что эта проблема не была упомянута в их документации, потому что это не интуитивно понятноповедение.

Редактировать: Я думаю, я узнал, как приток определяет эти интервалы времени - он всегда начинается с 0 эпохи времени.Если это правда, то мы можем поиграть со смещением, как нам нравится, перед тем как выполнить запрос.Я ожидаю, что это будет добавлено к их документации, потому что это может сэкономить много времени для других + это послужит подтверждением того, что в следующих выпусках не произойдет никаких существенных изменений.

...