连续查询以计算 InfluxDB 中的差异

Continuous query to calculate difference in InfluxDB

连续查询最常见的用途是计算平均值等

CREATE CONTINUOUS QUERY minnie ON world BEGIN SELECT min(mouse) INTO min_mouse FROM zoo GROUP BY time(30m) END

我有带增量值的数据点 我正在尝试计算每个间隔的价值差异。

INSERT mydb value=4  1470101034546846145
INSERT mydb value=8  1470101042290558132
INSERT mydb value=10 1470101043594271416 

我想得到 10 - 4 = 6 例如。

有没有办法使用连续查询来实现这一点?

尝试在您的查询中使用新的 DIFFERENCE() 函数: https://docs.influxdata.com/influxdb/v0.13/query_language/functions/#difference

SELECT DIFFERENCE(<function>(<field_key>)) FROM <measurement_name> WHERE <stuff> GROUP BY time(<time_interval>)

我认为这是从 v0.13 开始可用的。

你的选择是

  • DIFFERENCE() 用于顺序差异。在您的示例中,DIFFERENCE(mouse) 会给出 8-4、10-8 等。这可能对您有用,但不符合您的描述。
  • SPREAD(): 好像是你要找的,也就是区间上的shorthand for MAX(mouse) - MIN(mouse)。所以类似于:SELECT SPREAD(mouse) AS "mouse_range" INTO mouse_calcs FROM zoo GROUP BY time(30m),其中 mouse_rangemouse_calcs 是我选择的没有特殊含义的名称。