Influxdb 如何使用Flux根据结果表中的不同行转换XDB组结果
我正在尝试对FluxInfluxdb 如何使用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
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"])