微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何创建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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。