Influxdb - группа по времени (1м) - недостающие данные
У меня есть некоторые данные, которые поступают из сети каждую минуту с момента сбора и заносятся в мою базу данных о притоках. Так как он через сеть, он никогда не входит прямо в одну минуту и имеет некоторое дрожание...
Я пытаюсь согласовать эти нерегулярные данные с интервалами в одну минуту, но я вижу некоторые пропущенные пробелы, см. Пример ниже.
> precision rfc3339
>
> select value from snmp_ecio where host = 'my_host_a' and time > now() - 10m
name: snmp_ecio
time value
---- -----
2017-01-22T00:25:59.987735Z -0.1
2017-01-22T00:27:00.003208Z -0.1
2017-01-22T00:28:00.047265Z -0.2
2017-01-22T00:29:00.142676Z -0.1
2017-01-22T00:30:00.048707Z -0.3
2017-01-22T00:31:00.211728Z -0.1
2017-01-22T00:31:59.980621Z -0.1
2017-01-22T00:32:59.795329Z -0.1
2017-01-22T00:34:03.206552Z -0.1
2017-01-22T00:35:00.01463Z -0.1
> select mean(value) from snmp_ecio where host = 'my_host_a' and time > now() - 10m group by time(1m)
name: snmp_ecio
time mean
---- ----
2017-01-22T00:25:00Z -0.1
2017-01-22T00:26:00Z
2017-01-22T00:27:00Z -0.1
2017-01-22T00:28:00Z -0.2
2017-01-22T00:29:00Z -0.1
2017-01-22T00:30:00Z -0.3
2017-01-22T00:31:00Z -0.1
2017-01-22T00:32:00Z -0.1
2017-01-22T00:33:00Z
2017-01-22T00:34:00Z -0.1
2017-01-22T00:35:00Z -0.1
Кто-нибудь сталкивался с этой проблемой или может указать мне правильное направление?
Спасибо!
1 ответ
Чтобы заполнить пропущенные интервалы времени, используйте fill
оператор. В зависимости от того, какую версию вы используете, у вас будут различные варианты заполнения. Если вы используете 1.1+, я бы использовал fill(linear)
иначе я бы выбрал fill(previous)
,
SELECT mean(value)
FROM snmp_ecio
WHERE host = 'my_host_a' AND time > now() - 10m
GROUP BY time(1m) fill(linear)