【问题标题】:Using InfluxDB difference function使用 InfluxDB 差分函数
【发布时间】:2019-03-05 02:21:22
【问题描述】:

我的 influxdb 数据库中有一些测量数据,我可以使用这些数据进行查询:

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

我很乐意获得一些提示和反馈来解决我的问题。

我正在使用 influxdb 1.6.1

非常感谢! 克里斯托夫

【问题讨论】:

  • 与此同时,我发现“值”字段属于“字符串”类型。我使用命令“SHOW FIELD KEYS FROM E_real_con”为感兴趣的人显示字段类型。我删除了旧值,现在“值”是“浮点”类型。所以错误消息“ERR:不支持的差异迭代器类型:*query.stringInterruptIterator”消失了,但仍然没有结果。

标签: influxdb influxql


【解决方案1】:

我找到了解决方案。必须纠正以下两个错误:

1) 测量值的类型是“字符串”而不是“浮点”。由于数据来自 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】:

    2) 查询命令好像需要“where”

    比这更受限制。它需要一个带有最小时间戳的 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 1.8 的 CQ 中成功使用了difference()
    • CREATE CONTINUOUS QUERY cq_raw_growth_factor ON mymeas BEGIN SELECT mean(new_items) / (mean(new_items) - difference(mean(new_items))) AS raw_growth_factor INTO mymeas.autogen.mydb_calcs FROM mymeas.autogen.mydb WHERE time &gt; '2000-01-01T00:00:00Z' GROUP BY time(1d), location, code END
    • 根据文档,WHERE time &gt; x 子句被悄悄地剥离,但我把它留在了那里,所以我可以根据需要复制/粘贴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2021-08-02
    相关资源
    最近更新 更多