使用自定义窗口聚合函数的Influxdb通量查询

编程入门 行业动态 更新时间:2024-10-16 02:30:50
本文介绍了使用自定义窗口聚合函数的Influxdb通量查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

您能否帮助我了解InfluxDB 2 Flux查询语法以使用自定义聚合函数构建窗口查询。

我浏览了在线文档,但它们似乎缺少如何从自定义聚合函数中获取实际窗口内容(第一条、最后一条记录)的示例。它也不会立即描述自定义函数的预期签名。

我想构建一个带有滑动窗口的查询,它会在窗口中的第一个值和最后一个值之间产生差异。大致是这样的:

difference = (column, tables=<-) => ({ tables.last() - tables.first() }) from(bucket: "my-bucket") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "simple") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 1mo, fn: difference, column: "_value", timeSrc: "_stop", timeDst: "_time", createEmpty: true) |> yield(name: "diff")

以上示例的语法显然是错误的,但希望您能理解我正在尝试做的事情。

谢谢!

推荐答案

想出了以下内容。它至少在语法上有效:

from(bucket: "my-bucket") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "simple") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow( every: 1mo, fn: (column, tables=<-) => tables |> reduce( identity: {first: -1.0, last: -1.0, diff: -1.0}, fn: (r, acc) => ({ first: if acc.first < 0.0 then r._value else acc.first, last: r._value, diff: if acc.first < 0.0 then 0.0 else (acc.last - acc.first) }) ) |> drop(columns: ["first", "last"]) |> set(key: "_field", value: column) |> rename(columns: {diff: "_value"}) ) |> yield(name: "diff")

不过,窗口并没有真正滑动。

滑动窗口相同:

from(bucket: "my-bucket") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "simple") |> filter(fn: (r) => r["_field"] == "value") |> window(every: 1h, period: 1mo) |> reduce( identity: {first: -1.0, last: -1.0, diff: -1.0}, fn: (r, acc) => ({ first: if acc.first < 0.0 then r._value else acc.first, last: r._value, diff: if acc.first < 0.0 then 0.0 else (acc.last - acc.first) }) ) |> duplicate(column: "_stop", as: "_time") |> drop(columns: ["first", "last"]) |> rename(columns: {diff: "_value"}) |> window(every: inf)

更多推荐

使用自定义窗口聚合函数的Influxdb通量查询

本文发布于:2023-10-26 14:06:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1530359.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:通量   自定义   函数   窗口   Influxdb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!