在grafana中使用Flux查询语言添加交叉测量值

问题描述

我使用Flux设置了InfluxDB,并希望显示两个测量值的最新值之和。

可以通过以下方式显示各个值

x1 = from(bucket: "telegraf/autogen")
|> range(start: -1h)
|> filter(fn: (r) =>
   r._measurement == "value1")

x1

如果我尝试通过显示

x1 = from(bucket: "telegraf/autogen")
|> range(start: -1h)
|> filter(fn: (r) =>
  r._measurement == "value1")

x2 = from(bucket: "telegraf/autogen")
|> range(start: -1h)
|> filter(fn: (r) =>
  r._measurement == "value2")

x1 + x2

我得到一个错误添加最新测量值的正确方法是什么?

解决方法

您设法获得了 x1 表和 x2 表,现在您加入了这两个表并添加了带有总和的新字段:

new_table = join(tables: {x1: x1,x2: x1},on: ["_time"])
  |> map(fn: (r) => ({ r with "sum_x1_x2": (r._value_x1 + r._value_x2)})

地图功能允许您在表上修改/创建新值。结果表可能有“_field”、“_measurement”、“_value”列,每个输入表(x1x2)都有一个列。此外,映射字段“sum_x1_x2”具有总和值。

聚合/数据窗口也可能有所帮助。