使用 InfluxDB 差异函数
Using InfluxDB difference function
我的 influxdb 数据库中有一些测量数据,我可以通过以下方式查询:
select * from E_real_con
姓名:E_real_con
时间价值
---- -----
1537920001044785525 | 57160036.00
1538006401069651036 | 57227208.00
1538092800108297103 | 57294112.00
1538179200697333731 | 57366108.00
但是,"value" 是一个累加值,我想得到两个连续值之间的 delta/difference。
我尝试了以下方法:
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
我很乐意获得一些提示和反馈来解决我的问题。
我正在使用 influxdb 1.6.1
非常感谢!
克里斯托夫
我找到了解决方案。必须更正以下两个错误:
1) 测量值的类型是 "string" 而不是 "float"。由于数据来自 nodered,在将数据写入 influxdb 之前,我清除了数据库并在 nodered 中使用了 parseFloat()。
顺便说一句:您可以通过以下方式检查测量字段的数据类型:
SHOW FIELD KEYS FROM E_real_con
2) 查询命令好像需要一个"where"
这个有效:
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) It seems that the query command requires a "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)
这实际上使得无法将此类查询用作连续查询。
我的 influxdb 数据库中有一些测量数据,我可以通过以下方式查询:
select * from E_real_con
姓名:E_real_con
时间价值
---- -----
1537920001044785525 | 57160036.00
1538006401069651036 | 57227208.00
1538092800108297103 | 57294112.00
1538179200697333731 | 57366108.00
但是,"value" 是一个累加值,我想得到两个连续值之间的 delta/difference。
我尝试了以下方法:
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
我很乐意获得一些提示和反馈来解决我的问题。
我正在使用 influxdb 1.6.1
非常感谢! 克里斯托夫
我找到了解决方案。必须更正以下两个错误:
1) 测量值的类型是 "string" 而不是 "float"。由于数据来自 nodered,在将数据写入 influxdb 之前,我清除了数据库并在 nodered 中使用了 parseFloat()。 顺便说一句:您可以通过以下方式检查测量字段的数据类型:
SHOW FIELD KEYS FROM E_real_con
2) 查询命令好像需要一个"where"
这个有效:
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) It seems that the query command requires a "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)
这实际上使得无法将此类查询用作连续查询。