有没有办法用Flux填充0值点的稀疏数据结果?

问题描述 投票:0回答:3

我每 5 分钟分配一次点数,当值为 0 时,点数就被忽略了。我想用空值填充省略的数据。

我看到我可以用 InfluxQL 做:

group by time(5m) fill(0)

但是我使用的是 InfluxDB 2。我试过这个查询:

      from(bucket:"%v")
         |> range(start: %d) 
         |> filter(fn: (r) => r._measurement == "volume" and r.id == "%v")
         |> window(every: 5m, period: 5m, createEmpty: true)
         |> fill(value: 0)

但它似乎没有用。

任何帮助表示赞赏。

influxdb flux-influxdb
3个回答
2
投票

原来这是 InfluxDB 中的一个 bug,与https://github.com/influxdata/influxdb/issues/21857

显然

window
功能也不起作用。


0
投票

fill() 函数仅替换数据中的空值,而不是基于时间丢失的数据点。目前没有可用的功能,虽然已经requested.

我在需要填写缺失数据的时间段内所做的是生成一个时间序列(具有零值)并将其与缺失数据的时间序列结合起来。


0
投票

[已解决] 用 0 点填充()稀疏数据

有同样的问题,

fill()
只适用于整数, 如果按值捕获不存在的数据点 (...)

aggregateWindow()
终于有帮助了

例子

from(bucket: "sys")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
//  |> window(every: 5m, period: 5m, createEmpty: true)
  |> aggregateWindow(every: 5m, fn: mean, createEmpty: true)
  |> filter(fn: (r) => r._measurement == "docker_cpu_percent" )
    |> map(fn: (r) => ({
      r with
      _value: if exists r._value then float(v: r._value) * 1.0  else 0.0
    })
  )
© www.soinside.com 2019 - 2024. All rights reserved.