Influxdb xdb中的聚合流量查询

Influxdb xdb中的聚合流量查询,influxdb,Influxdb,我是XDB的新手。我使用的是1.8+Influxdb和com.Influxdb:Influxdb客户端java:1.11.0。我的尺寸低于标准 stocks { (tag) symbol: String (field) price: Double (field) volume: Long (time) ts: Long } 我试图在15分钟的时间内查询测量值。我有以下疑问 "from(bucket: \"test/autogen\")"

我是XDB的新手。我使用的是1.8+Influxdb和com.Influxdb:Influxdb客户端java:1.11.0。我的尺寸低于标准

stocks {
  (tag) symbol: String
  (field) price: Double
  (field) volume: Long
  (time) ts: Long
}
我试图在15分钟的时间内查询测量值。我有以下疑问

"from(bucket: \"test/autogen\")" +
  " |> range(start: -12h)" +
  " |> filter(fn: (r) => (r[\"_measurement\"] == \"$measurementName\" and r[\"_field\"] == \"volume\"))" +
  " |> cumulativeSum(columns: [\"_value\"])" +
  " |> window(every: 15m, period: 15m)"

我相信上面的查询会计算数据的累积和,只返回volume字段。但是,我希望在单个流量查询中包含整个度量,包括价格、符号和ts以及卷的累积和。我不知道该怎么做。感谢您的帮助。谢谢。

谢谢Ethan Zhang。通量输出表对字段使用垂直(按列)数据布局。 请注意,price和volume字段存储为两行。 要实现此结果,可以使用名为v1.fieldsAsCols()的函数将表格从垂直布局转换回水平布局。以下是其文档的链接: 因此,查询可以重写如下:示例查询1

from(bucket: \"test/autogen\")
|> range(start: -1h)
|> filter(fn: (r) => r["_measurement"] == "stocks"))
|> v1.fieldsAsCols()
|> group()
|> cumulativeSum(columns: ["volume"])
|> window(every: 15m, period: 15m)
另一种方法是使用pivot:samplequery2

from(bucket: \"test/autogen\")
|> range(start: -1h)
|> filter(fn: (r) => r["_measurement"] == "stocks")
|> pivot(rowKey:[\"_time\"], columnKey: [\"_field\"], valueColumn: \"_value\")
|> group()
|> cumulativeSum(columns: ["volume"])
|> window(every: 15m, period: 15m)