Использование разностной функции InfluxDB - PullRequest
0 голосов
/ 29 сентября 2018

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

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 Ответ

0 голосов
/ 01 октября 2018

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

1) Значения в измерении были типа "строка", а не "float".Так как данные поступали от 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)

не работает.

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

...