grafana - 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 分钟时间范围内的平均值。
谢谢你的帮助。
解决方案
组是合并值的关键。
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)
推荐阅读
- python - 将csv文件传递给Python中的函数的问题
- reactjs - 显示基于角色 reactjs 的动作按钮
- c# - 实例化顺序
- python - 类型错误:+ 不支持的操作数类型:“int”和“str”使用 GROUPBY
- kotlin - Run gradle vert.x in the command line
- coldfusion - ColdFusion 休息组件
- java - 如何以编程方式为 customAlertDialog 修改 LinearLayout 的高度和宽度?
- c# - 将 vb 转换为 c# json
- reactjs - React 钩子 useEffect 调用 API 第二次和第一次调用 API 响应也返回
- amazon-web-services - 使用 boto3 列出对象时出错:botocore.parsers.ResponseParserError: