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

Influxdb 如何创建偏离平均小时值的XDB警报?,influxdb,influxdb-2,flux-influxdb,Influxdb,Influxdb 2,Flux Influxdb,所以我试图找到任何关于更复杂的流量查询的文档,但经过几天的搜索,我还是迷路了。我想计算一周中每小时的平均值,然后当新数据出现时,我想检查它是否偏离了该小时的x个标准偏差 基本上,我希望有24x7数组字段,每个字段代表过去1年中每周每小时的平均值/中值。然后我想将每小时最后几天的值与这些平均值进行比较,并报告一个错误。我不明白如何计算这些平均数。关于通量是否有一些隐藏的大量文档 我真的不需要一个完整的解决方案,只是一些方向会很好。比如,在标准库或其他任何地方是否有一些实用函数 编辑:经过一些阅读,

所以我试图找到任何关于更复杂的流量查询的文档,但经过几天的搜索,我还是迷路了。我想计算一周中每小时的平均值,然后当新数据出现时,我想检查它是否偏离了该小时的x个标准偏差

基本上,我希望有24x7数组字段,每个字段代表过去1年中每周每小时的平均值/中值。然后我想将每小时最后几天的值与这些平均值进行比较,并报告一个错误。我不明白如何计算这些平均数。关于通量是否有一些隐藏的大量文档

我真的不需要一个完整的解决方案,只是一些方向会很好。比如,在标准库或其他任何地方是否有一些实用函数


编辑:经过一些阅读,看起来我需要做的就是使用窗口和聚合窗口函数,但我还没有找到确切的方法,所以,这对我来说是有效的。需要进行一些清理,但获得每小时+工作日成功分组的值以及所有值的平均值

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()