Использование разностной функции 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)
Это фактически делает невозможным использование такого запроса в качестве непрерывного запроса.