Documentation

在计算中使用多个字段

要在数学计算中使用多个字段的值,请完成以下步骤:

  1. 按您计算所需的字段进行筛选
  2. 将字段转换为列
  3. 执行数学计算

按字段过滤

使用 filter() 仅返回计算所需的字段。 使用 or 逻辑运算符 按多个字段进行过滤。

以下示例查询两个字段, AB

from(bucket: "example-bucket")
    |> range(start: -1m)
    |> filter(fn: (r) => r._field == "A" or r._field == "B")

此查询为每个字段返回一个或多个表。例如:

时间字段
2021-01-01T00:00:00ZA12.4
2021-01-01T00:00:15ZA12.2
2021-01-01T00:00:30ZA11.6
2021-01-01T00:00:45ZA11.9
时间字段
2021-01-01T00:00:00ZB3.1
2021-01-01T00:00:15ZB4.8
2021-01-01T00:00:30ZB2.2
2021-01-01T00:00:45ZB3.3

将字段透视为列

使用 pivot() 来按时间对齐多个字段。

要正确地在 _time 上进行透视,每个字段的点必须具有相同的时间戳。 如果时间戳不规则或未完美对齐,请参阅 标准化不规则时间戳

// ...
  |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")

使用上述查询的数据 above,这个 pivot() 函数返回:

时间AB
2021年01月01日 00:00:00 UTC12.43.1
2021-01-01T00:00:15Z12.24.8
2021-01-01T00:00:30Z11.62.2
2021-01-01T00:00:45Z11.93.3

进行计算

使用 map() 执行数学运算,使用列值作为操作数。

以下示例使用 AB 列中的值来计算一个新的 _value 列:

// ...
    |> map(fn: (r) => ({ r with _value: r.A * r.B }))

使用上面的透视数据,这个 map() 函数返回:

时间AB
2021-01-01T00:00:00Z12.43.138.44
2021-01-01T00:00:15Z12.24.858.56
2021-01-01T00:00:30Z11.62.225.52
2021-01-01T00:00:45Z11.93.339.27

完整示例查询

from(bucket: "example-bucket")
    |> range(start: -1m)
    |> filter(fn: (r) => r._field == "A" or r._field == "B")
    |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
    |> map(fn: (r) => ({r with _value: r.A * r.B}))


Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: