Использование разностной функции InfluxDB

У меня есть некоторые данные измерений в моей базе данных InflowDB, которые я могу запросить:

select * from E_real_con
имя: E_real_con
значение времени
---- -----
1537920001044785525 | 57160036,00
1538006401069651036 | 57227208,00
1538092800108297103 | 57294112,00
1538179200697333731 | 57366108,00

Тем не менее, "значение" является накопительным значением, и я хотел бы получить разность / разность между двумя последовательными значениями.

Я попробовал следующее:

SELECT difference(last(value)) FROM E_real_con WHERE time >= now() - 7d GROUP BY time(1d) fill(null)

Тем не менее, я получаю следующее сообщение об ошибке:

ERR: unsupported difference iterator type: *query.stringInterruptIterator

Я был бы рад получить несколько советов и отзывов, как решить мою проблему.

Я использую InfxDB 1.6.1

Большое спасибо! Christoph

1 ответ

Решение

Я нашел решение. Следующие две ошибки должны были быть исправлены:

1) Значения в измерении были типа "строка", а не "плавать". Так как данные поступали от nodered, я очистил базу данных и использовал parseFloat() в nodered перед записью данных в influenxdb. Кстати: вы можете проверить тип данных вашего поля измерения с помощью:

SHOW FIELD KEYS FROM E_real_con

2) Кажется, что команда запроса требует "где"

Это работает:

SELECT difference(last(value)) FROM E_real_del WHERE time >= now() - 7d GROUP BY time(1d)

в то время как:

SELECT difference(last(value)) FROM E_real_del GROUP BY time(1d)

не работает.

Я надеюсь, что это может помочь кому-то еще.

2) Кажется, что команда запроса требует "где"

Это даже более ограничено, чем это. Для этого требуется where с минимальной отметкой времени.

Например, следующее не дает мне результата:

select difference(last(value)) from WaterConsumption_Total where time < now() - 1d group by time(1d) fill(previous)

Пока это делает:

select difference(last(value)) from WaterConsumption_Total where time > '2019-08-23T00:00:00Z' group by time(1d) fill(previous)

Это фактически делает невозможным использование такого запроса в качестве непрерывного запроса.

Другие вопросы по тегам