阅读本文将学到:reduce函数用法、组合多个查询结果、方差递推公式、总体方差和样本方差的区别。
问题场景
假如你的influxdb2有一个库正在监控主机的内存和CPU参数。
那我们的问题是:如何同时计算过去一小时内存的平均使用情况和内存最高时用量。
即同求两个聚合函数:mean和max。这在SQL里就十分简单了。假如在Flux里如何查呢。
常规聚合查询方法
from(bucket: "system_bucket")
|> range(start: -1h)
|> filter(fn: (r) => r["_measurement"] == "mem")
|> filter(fn: (r) => r["_field"] == "used")
|> mean()
system_bucket存储主机内存和CPU使用情况,mem作为一个表存储内存情况。
从Flux语法看,单次只能计算一个聚合函数,此处即为mean。
解决思路
思路1 reduce函数
先上代码
from(bucket: "system_bucket")
|> range(start: 2022-11-02T05:35:11.226Z,stop:2022-11-02T06:35:11.226Z)
|> filter(fn: (r) => r["_measurement"] == "mem")
|> filter(fn: (r) => r["_field"] ==