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)
Другие вопросы по тегам