В последнее время мы столкнулись с очень раздражающей проблемой, связанной со временем 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 эпохи времени.Если это правда, то мы можем поиграть со смещением, как нам нравится, перед тем как выполнить запрос.Я ожидаю, что это будет добавлено к их документации, потому что это может сэкономить много времени для других + это послужит подтверждением того, что в следующих выпусках не произойдет никаких существенных изменений.