Influxdb 如何使用Flux根据结果表中的不同行转换XDB组结果

Influxdb 如何使用Flux根据结果表中的不同行转换XDB组结果,influxdb,influxdb-2,flux-influxdb,Influxdb,Influxdb 2,Flux Influxdb,我正在尝试对Fluxgroup操作的结果执行转换 我需要根据各行的值导出一个值 源查询: from('bucket') |> ... filters, etc |> group() |> sort() 返回具有以下形状的数据: #group: result: table | field | value ----- | ----- | ----- 0 | "A" | 1 0 | "B&quo

我正在尝试对Flux
group
操作的结果执行转换

我需要根据各行的值导出一个值

源查询:

from('bucket')
|> ... filters, etc
|> group()
|> sort() 
返回具有以下形状的数据:

#group:
  result:
    table | field | value
    ----- | ----- | -----
        0 | "A"   | 1
        0 | "B"   | 2
        0 | "C"   | 3
#group:
  result:
    table | field | value
    ----- | ----- | -----
        1 | "A"   | 4
        1 | "B"   | 5
        1 | "C"   | 6
etc...
例如,我尝试添加组中所有行的值,以得到如下数据:

field | value
----- | -----
"New" | 6
"New" | 15
    
我尝试了
map
,但这似乎只允许我访问单个行,而不是组中的表。我的第一个想法是尝试将所有行映射到一个平面记录中,之后映射就变得微不足道了


如何访问表本身?这是正确的方法吗?

我确信这不是最佳方法,但目前它对我有效,结果是
reduce
更合适:

calculate = (r, accumulator) => {
  A = if r._field == "A" then r._value else accumulator.A
  B = if r._field == "B" then r._value else accumulator.B
  C = if r._field == "C" then r._value else accumulator.C
  return A + B + C
}

from('bucket')
  |> ... filters, etc
  |> group()
  |> sort() 
  |> reduce(
    // Define the initial accumulator record
    identity: {
      A: 0.0,
      B: 0.0,
      C: 0.0,
      Output: 0.0,
    },
    fn: (r, accumulator) => ({
      A: if r._field == "A" then r._value else accumulator.A,
      B: if r._field == "B" then r._value else accumulator.B,
      C: if r._field == "C" then r._value else accumulator.C,
      Output: calculateMassFlow(r, accumulator)
    })
  )
  |> map(fn: (r) => ({
    _time: r._time,
    _field: "Name",
    _value: r.Output
  }))
  |> group(columns: ["_field"])