InfluxDB如何通过查询生成指定步长的数值列表变量?
在InfluxDB中通过查询生成数值序列变量
可以利用Flux的repeat、cumulativeSum和map函数组合,实现纯数学方式生成目标数值列表,无需读取任何桶数据。具体实现如下:
实现查询
// 定义参数变量 start = 100 end = 200 step = 25 // 计算序列元素个数 elementCount = int((end - start) / step) + 1 // 生成目标数值序列 repeat(n: elementCount, value: step) |> cumulativeSum() |> map(fn: (r) => ({_value: r._value - step + start}))
原理说明
repeat函数:根据计算出的元素个数,生成包含elementCount个step值的序列。示例中会生成[25, 25, 25, 25, 25]。cumulativeSum函数:对序列进行累加,得到[25, 50, 75, 100, 125]。map函数:将累加结果转换为目标数值——先减去step得到[0, 25, 50, 75, 100],再加上start就得到最终的[100, 125, 150, 175, 200]。
变量配置
在InfluxDB的变量设置界面选择Query类型,将上述Flux查询粘贴到查询输入框中,保存后变量就会自动加载生成的数值列表。后续只需修改查询中的start、end、step参数,即可自动更新变量的数值序列。
内容的提问来源于stack exchange,提问作者acidburn23
相关产品推荐
相关产品推荐

