我每 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)
但它似乎没有用。
任何帮助表示赞赏。
有同样的问题,
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
})
)