You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

InfluxDB v2使用Flux脚本发送Telegram消息时出现类型错误

解决InfluxDB Flux脚本调用Telegram API的类型错误问题

问题背景

尝试编写Flux脚本在InfluxDB v2中向Telegram发送消息,编写的脚本如下:

import "contrib/sranka/telegram"
token = "TOKEN"

lastReported =
      from(bucket: "system_stats")
        |> range(start: -1m)
        |> filter(fn: (r) => r["_measurement"] == "mem")
        |> filter(fn: (r) => r._field == "used_percent")
        |> last()

telegram.message(token: token, channel: "xxx", text: "Test ${lastReported._value}")

lastReported

执行时出现类型错误:

type error @11:68-11:80: expected {A with _value:B} but found [{C with _value:D, _time:time, _stop:time, _start:time, _measurement:string, _field:string}]

确认查询结果包含_value字段,但仍报错。

问题原因

last()函数返回的是表(记录集合/数组),即使结果只有一条记录,它依然是包含单个元素的集合类型,而非单个记录对象。直接用lastReported._value访问字段时,Flux无法从集合中提取单个记录的_value,因此抛出类型不匹配错误。

解决方案

需要先将表转换为单个记录对象,再访问_value字段,有两种常用方法:

方法1:使用findRecord提取记录

在last()之后添加findRecord,提取表中的第一个(也是唯一一个)记录:

import "contrib/sranka/telegram"
token = "TOKEN"

lastReported =
      from(bucket: "system_stats")
        |> range(start: -1m)
        |> filter(fn: (r) => r["_measurement"] == "mem")
        |> filter(fn: (r) => r._field == "used_percent")
        |> last()
        |> findRecord(fn: (key) => true, idx: 0) // 提取唯一记录

telegram.message(token: token, channel: "xxx", text: "Test ${lastReported._value}")

lastReported

方法2:使用tableFind + getRecord提取记录

先获取结果表,再通过tableFind定位表,最后用getRecord提取记录:

import "contrib/sranka/telegram"
token = "TOKEN"

lastReportedTable =
      from(bucket: "system_stats")
        |> range(start: -1m)
        |> filter(fn: (r) => r["_measurement"] == "mem")
        |> filter(fn: (r) => r._field == "used_percent")
        |> last()

// 从表中提取单个记录
lastReported = lastReportedTable |> tableFind(fn: (key) => true) |> getRecord(idx: 0)

telegram.message(token: token, channel: "xxx", text: "Test ${lastReported._value}")

lastReportedTable

两种方法都能将集合类型的表转换为单个记录对象,从而正确访问_value字段,解决类型错误问题。

内容的提问来源于stack exchange,提问作者Andrey Khataev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:12:55