首页 > 解决方案 > InfuxDB v2 的平均值

问题描述

我有 2 个室外温度源,可以保存在 InfuxDB v2 中。现在我正在尝试在 Grafana 中编写 Flux 查询来显示平均温度图。两种温度都有相同的“测量”、“场”和“地点”标签,区别只是“来源”标签。

from(bucket: "netatmo")
  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)
  |> filter(fn: (r) =>
    r._measurement == "meteodata" and
    r._field == "temperature" and
    r.where == "outdoor" and
    r.source == "netatmo"
  )

如果我不指定 r.source,我的图表中有 2 条线。但我只需要一行,从 2 个值计算平均值。我怎样才能得到它?

也许问题是温度值没有存储在相同的时间戳中,因为它来自 2 个设备,并且当温度变化时,这会随机发送数据。有时温度每分钟发送两次,有时每 3 分钟发送一次。我需要一个 1 分钟时间范围内的平均值。

谢谢你的帮助。

标签: grafanainfluxdbinfluxdb-2

解决方案


组是合并值的关键。

from(bucket: "netatmo")
  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)
  |> group(columns: ["where"], mode:"by")
  |> filter(fn: (r) => r._measurement == "meteodata")
  |> filter(fn: (r) => r._field == "temperature")
  |> filter(fn: (r) => r.where == "outdoor")
  |> aggregateWindow(every:1m, fn:mean, createEmpty: false)

推荐阅读