使用 Flux 查询基于组查找总和 - InfluxDB

Dr.*_*ugh 4 mysql influxdb grafana influxql flux-influxdb

我正在尝试使用 Flux 查询语言来查找基于一个人的列的总和。如果我有以下输入表:

在此输入图像描述

如何使用 Flux 查询来获取以下输出表:

在此输入图像描述

到目前为止,我已经尝试过类似的操作,但出现错误:

from: (bucket: "example")
  |> range(start:v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r)=> r["_measurement"] == "test")
  |> group(columns: r["person"])
  |> reduce( fn: (r, accumulator) => ({sum: r._value + accumulator.sum}), identity: {sum: 0})
Run Code Online (Sandbox Code Playgroud)

Ame*_*ful 6

你几乎走在正确的道路上了。您已经按名称分组,现在需要使用 function sum。注意最后一个函数 -|> group()它只是用于将表联合到一个视图。

|> group(columns: ["person"])
|> sum(column: "hoursSpent")
|> group()
Run Code Online (Sandbox Code Playgroud)

我提供了完整的调试查询:

import "array"

data = array.from(rows: [
  {person: "John Smith", sport: "Cycling", hoursSpent: 5},
  {person: "John Smith", sport: "Hiking", hoursSpent: 6},
  {person: "John Smith", sport: "Swimming", hoursSpent: 1},
  {person: "John Smith", sport: "Dancing", hoursSpent: 2},
  {person: "Nancy Jones", sport: "Badminton", hoursSpent: 10},
  {person: "Nancy Jones", sport: "Soccer", hoursSpent: 31},
  {person: "Nancy Jones", sport: "Basketball", hoursSpent: 8},
  {person: "Trevor John", sport: "Baseball", hoursSpent: 24},
  {person: "Trevor John", sport: "Water Polo", hoursSpent: 2},
])

data
 |> group(columns: ["person"])
 |> sum(column: "hoursSpent")
 |> group()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述