我正在尝试通过从 InfluxDB 1、2、3 和 4 周前查询相同的时间间隔来使用 Kapacitor 批处理|查询生成基线,然后将其向前移动并像这样连接在一起:
var w1 = batch
|query('SELECT mean(""value"") FROM ""MyDB"".""autogen"".""MetricName""')
.offset(1w).period(period).every(1m).align().groupBy(time(1m))
|shift(1w)
var w2 = batch
|query('SELECT mean(""value"") FROM ""MyDB"".""autogen"".""MetricName""')
.offset(2w).period(period).every(1m).align().groupBy(time(1m))
|shift(2w)
var w3 = batch
|query('SELECT mean(""value"") FROM ""MyDB"".""autogen"".""MetricName""')
.offset(3w).period(period).every(1m).align().groupBy(time(1m))
|shift(3w)
var w4 = batch
|query('SELECT mean(""value"") FROM ""MyDB"".""autogen"".""MetricName""')
.offset(4w).period(period).every(1m).align().groupBy(time(1m))
|shift(4w)
var bj = w1
|join(w2, w3, w3)
.as('w1', 'w2', 'w3', 'w4')
.fill('null')
var b = bj
|eval(lambda: (""w1.mean"" + ""w2.mean"" + ""w3.mean"" + ""w4.mean"") / float(4.0))
.as('avg')
我正在使用完全外连接,因为有些星期可能会丢失一个值,在这种情况下,我会将基线计算为 3 个当前值的平均值。
但是,lambda 似乎不支持 Mean() 或任何此类数学函数。它似乎也不支持检查空值。
有没有办法像这样计算基线?
此外,一旦计算出基线,如何将其缓存起来,以便可以根据基线检查传入的流数据?
任何帮助表示赞赏!谢谢