如何在Influx查询中设置结果下限为0,将负数值替换为0
InfluxDB查询结果设置0为下限的实现方法
InfluxQL 语法方案(适用于1.x版本、2.x兼容模式)
直接使用max()函数做数值截断即可,将需要处理的字段和0作为参数传入max(),返回两者的最大值,就能自动把所有负数替换为0。
你给出的示例查询修改后如下:
SELECT max(x, 0) AS x' FROM measurement
执行后返回的结果和你要求的完全一致:
- x为-130时,
max(-130, 0)返回0 - x为803时,
max(803, 0)返回原始值803 - x为0时,返回值保持0不变
Flux 语法方案(适用于2.x、3.x版本默认查询语法)
如果使用新版本默认的Flux语法,可以通过map函数配合math.max方法实现同等效果:
// 导入math包 import "math" from(bucket: "你的存储桶名称") |> range(start: 你的查询起始时间, stop: 你的查询结束时间) |> filter(fn: (r) => r._measurement == "measurement" and r._field == "x") // 遍历所有值,将小于0的替换为0 |> map(fn: (r) => ({ r with _value: math.max(x: r._value, y: 0.0) }))
内容的提问来源于stack exchange,提问作者wizzfizz94
相关产品推荐
相关产品推荐

