微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

InfluxDB Flux 加入系列

如何解决InfluxDB Flux 加入系列

我在 influxdb 中有以下数据

server,operation=ADD queryMs=7.9810 1620608972904452000
server,operation=GET queryMs=12.2430 1620608972909339200
server,operation=UPDATE queryMs=11.5780 1620608972909655400
server,operation=ADD queryMs=11.2460 1620608972910445700
server,operation=GET queryMs=15.0620 1620608972911305000
etc...

所以在我的图表中我看到三个系​​列

enter image description here

我想实现一系列所有 operation

我尝试|> group(columns: ["_field"]),这正是我需要的,但查询速度非常慢!

from(bucket: "initial")
  |> range(start: v.timeRangeStart,stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "server")
  |> filter(fn: (r) => r["_field"] == "queryMs")
  |> group(columns: ["_field"])
  |> aggregateWindow(every: v.windowPeriod,fn: mean,createEmpty: false)
  |> yield(name: "mean")

enter image description here

我的问题有什么快速解决方案吗?

解决方法

这工作得更快

union(tables: [
  from(bucket: "initial")
    |> range(start: v.timeRangeStart,stop: v.timeRangeStop)
    |> filter(fn: (r) => r["_measurement"] == "server")
    |> filter(fn: (r) => r["_field"] == "queryMs")
    |> filter(fn: (r) => r["operation"] == "GET")
    |> aggregateWindow(every: v.windowPeriod,fn: mean,createEmpty: false),from(bucket: "initial")
    |> range(start: v.timeRangeStart,stop: v.timeRangeStop)
    |> filter(fn: (r) => r["_measurement"] == "server")
    |> filter(fn: (r) => r["_field"] == "queryMs")
    |> filter(fn: (r) => r["operation"] == "ADD")
    |> aggregateWindow(every: v.windowPeriod,stop: v.timeRangeStop)
    |> filter(fn: (r) => r["_measurement"] == "server")
    |> filter(fn: (r) => r["_field"] == "queryMs")
    |> filter(fn: (r) => r["operation"] == "UPDATE")
    |> aggregateWindow(every: v.windowPeriod,])
  |> drop(columns:["operation"])
  |> sort(columns: ["_time"],desc: false)
  |> aggregateWindow(every: v.windowPeriod,createEmpty: false)
  |> yield(name: "mean")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。