使用自定义窗口聚合函数进行 Influxdb Flux 查询

2024-01-24

您能否帮助我使用 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用自定义窗口聚合函数进行 Influxdb Flux 查询 的相关文章

  • Centos7 部署InfluxDB

    因为目前网络上关于InfluxDB的资料并不多 xff0c 所以这里建议多参考官网 官网 xff1a Home InfluxData 点击此处的Docs xff1a 这里选择 InfluxDB OSS xff1a 使用文档时根据需求选择查看
  • proxmox ve6+influxdb+grafana 集群监控

    pve支持将自身运行状态发送至第三方服务器 0 环境介绍 root 64 pve143 span class token comment pveversion v span proxmox ve 6 2 1 span class token
  • QT操作 influxdb时序数据库(libcur)

    概述 最近在项目中需要用到influxdb 数据库 xff0c 当时使用了libcur库之后 xff0c 插入数据的速度一直不太理想 创建字表的速度 1W的话需要11Min xff0c 对于这样的时间完全达不到合格 经过研究进行了打包处理
  • Influxdb 1.2版本优化之旅(经验证,适用于influxdb1.4版本)

    一 常见异常 1 max series per database exceeded 异常 err max series per database exceeded java lang RuntimeException error max s
  • 使用 Grafana+collectd+InfluxDB 打造现代监控系统

    想打造 New Relic 那样漂亮的实时监控系统我们只需要 InfluxDB collectd Grafana 这三个工具 这三个工具的关系是这样的 采集数据 collectd gt 存储数据 InfluxDB gt 显示数据 Grafa
  • Prometheus 远程读写 Influxdb

    Prometheus 远程读写 Influxdb Influxdb InfluxDB 是一款开源的时序数据库 是InfluxData 是一个公司 提供时序平台 下的一个产品 使用Go语言开发 时序数据库 Time Series Databa
  • 制作每日重置的InfluxDB/Grafana累积函数(锯齿图)

    我将能源使用数据记录为计数器 我希望将其显示为每天重置的累积图表 类似地在这里问 我可以按如下方式生成累积值 SELECT mean value FROM energy WHERE timeFilter GROUP BY time inte
  • Docker-Compose 上的 InfluxDB 无法读取 SSL 证书文件

    我在尝试使用在 Docker Compose 上运行的 InfluxDB v1 8 配置 SSL 时遇到一些问题 我跟着官方文档 https docs influxdata com influxdb v1 8 administration
  • 如何使用类似 SQL 的接口 INSERT 到 influxDB 中?

    是否有可能INSERT使用 InfluxDB 上类似 SQL 的接口将数据转换为系列 测量值 是的 您可以简单地INSERT线路协议字符串 https docs influxdata com influxdb v1 6 tools shel
  • 计算 InfluxDB 中开始和结束事件之间的持续时间

    我对 InfluxDB 有两个写入点 一个是开始 另一个是结束 我只需要确定这两个事件之间的持续时间 并围绕它进行查询 InfluxDB有difference 聚合方法 但它不适用于时间元字段 提供自定义时间戳值是实现此目的的唯一方法吗 A
  • 使用 k6 时如何向 influxdb 进行身份验证

    我使用 k6 作为负载测试工具 我想将数据写入 influxdb 一切正常 除了我不知道如何发送 influxdb 的用户凭据 Example k6 exe run out influxdb http localhost 8086 stre
  • 用千分尺查询数据

    我们有这个奇特的监控系统 我们的 spring boot 服务通过千分尺将指标发布到流入数据库 有一个不错的 grafana 前端 但问题是我们现在处于这样一个阶段 我们必须在其他服务中提供其中一些指标来进行推理 整个体系是我的前任建立的
  • docker重启时数据库丢失

    我在 Windows 10 的 Docker 上运行 influxdb 和 grafana 每次关闭 Docker 时 我都会丢失数据库 这是我所知道的 我尝试过调整保留策略 但对 结果 我可以关闭并重新启动容器 docker compos
  • 使用自定义窗口聚合函数进行 Influxdb Flux 查询

    您能否帮助我使用 InfluxDB 2 Flux 查询语法来构建带有自定义聚合函数的窗口查询 我浏览了在线文档 但它们似乎缺乏有关如何从自定义聚合函数中获取实际窗口内容 第一条 最后一条记录 的示例 它也没有立即描述自定义函数的预期签名 我
  • 将带标签的 pandas DF 写入 influxdb

    我有这个 3526 rows x 5 columns DF 其中col0是时间 col1 col3是标签和col4是我的价值 0 1 2 3 4 0 2017 09 29 22 41 51 10 2 95 5 C1195 LF470 SAR
  • 如何使用 influxdb non_negative_derivative 获得一致的值?

    将 grafana 与 influxdb 结合使用 我试图显示某个计数器值的每秒速率 如果我使用non negative derivative 1s 函数中 rate 的值似乎根据 grafana 视图的时间宽度而发生巨大变化 我正在使用l
  • 在将连续查询添加到生产 influxdb 之前测试连续查询的最佳方法是什么?

    将新的连续查询添加到生产数据库 influxdb 的最佳方法是什么 克隆生产 influxdb 吗 我希望避免这种情况 有没有一种好的方法可以通过网络管理界面来测试和尝试它们 我想你可以 创建临时测量 设置 CQ 插入一些示例数据并在 CQ
  • 从 CLI 查询 InfluxDB 时显示本地时区的时间

    我使用 UTC 将点存储在 InfluxDB 中 但是从命令行 https docs influxdata com influxdb v1 6 tools shell influx precision rfc3339 我想在所有查询中以本地
  • 如何获取测量中的条目数

    我是 influxdb 的新手 我刚刚开始阅读流入文档 我似乎无法得到相当于 从表中选择计数 在 influxdb 中工作 我有一个称为购物车的测量 time status cartid 1456116106077429261 0 A 14
  • Grafana中从InfluxDB中获取总共两个系列的数据

    我现在很困惑 我在 Influx 和 Grafana 的深处花了一三天时间 绘制了一些对我的需求至关重要的图表 但是 对于最后一个指标 我需要合计两个指标 列值中的两个增量计数 我们将它们称为 notification one 和 noti

随机推荐