0

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

在此处输入图像描述

如何使用 Flux Query 获取以下输出表:

在此处输入图像描述

到目前为止,我已经尝试过这样的事情,但我得到了错误:

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})
4

1 回答 1

0

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

|> group(columns: ["person"])
|> sum(column: "hoursSpent")
|> group()

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

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()

在此处输入图像描述

于 2022-01-19T15:19:19.563 回答