如何创建Influxdb警报以偏离平均小时值?

问题描述

因此,我试图查找有关更复杂的Flux查询的任何文档,但是经过几天的搜索,我仍然迷失了方向。我希望能够计算一周中每个小时的平均值,然后在收到新数据时要检查该小时是否偏离x标准偏差。

基本上,我希望有24x7的数组字段,每个字段表示过去一年中一周中每小时的平均值/中位数。然后,我想将每小时的最后几天值与这些平均值进行比较,并报告一个错误。我不明白如何计算这些平均值。在Flux上有一些隐藏的详尽文档吗?

我真的不需要一个完整的解决方案,只是某个方向会很好。就像,在标准库或任何其他程序中是否有一些实用程序功能

编辑:经过一番阅读,看起来我需要做的只是使用window和AggregationWindow函数,但我还没有找到确切的方法

解决方法

好的,这就是对我有用的方法。需要进行清理,但成功将每小时+工作日的值以及所有值的平均值进行分组

import "date"
tab1 = from(bucket: "qweqwe")
  |> range(start: v.timeRangeStart,stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "asdasd")
  |> filter(fn: (r) => r["_field"] == "reach")
  |> aggregateWindow(every: 1h,fn: mean,createEmpty: false)


mapped = tab1 
  |> map(fn: (r) => ({ r with wd: string(v: date.weekDay(t: r._time)),h: string(v: date.hour(t: r._time)) }))
  |> map(fn: (r) => ({ r with mapped_time: r.wd + " " + r.h }))

grouped = mapped
  |> group(columns: ["mapped_time"],mode: "by")
  |> mean()
  |> group() 
  |> toInt()

  |> yield()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...