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

Grafana 10.0.0中JSON API数据源的时间序列数据转换问询

在Grafana里用JSON API数据源转分离式时间序列数据

不用额外写代码或加中间件,直接靠Grafana的内置工具或者插件就能搞定,两种方案给你:

一、用Grafana自带的Transform(零插件)

这是最省事的办法,步骤如下:

  1. 先配好JSON API数据源,确保能拉到目标数据。
  2. 建面板选这个数据源,拿到原始数据后切到Transform标签页,依次加这几个转换:
    • 提取字段:把Values、TimeStamps还有Keyinfo.Name(用来标指标名,比如温度)提出来。
    • 展开字段:分别对Values和TimeStamps做Unwind操作,把数组拆成一行行,每行对应一个时间戳和数值。
    • 整理字段:把Values改名叫value,TimeStamps改名叫time,留着Keyinfo.Name当metric用来区分不同指标。
    • 转换字段类型:把time字段转成Time类型,让Grafana能识别出这是时间序列数据。

转完之后,原始的分离数组就变成Grafana能直接用的格式了:

[
  {"time": "2023-06-21T00:57:54+06:00", "value": 20.4627780914307, "metric": "Temperature"},
  {"time": "2023-06-21T04:38:02+06:00", "value": 20.4127216339111, "metric": "Temperature"},
  {"time": "2023-06-21T04:52:33+06:00", "value": 20.3624877929688, "metric": "Temperature"}
]

二、用JSONata插件处理复杂场景

如果内置Transform满足不了特殊逻辑,就装个Grafana JSONata Plugin:

  1. 要么在Grafana插件市场搜JSONata安装,要么用命令行执行:grafana-cli plugins install grafana-jsonata-datasource。
  2. 配好数据源后,在查询里写JSONata表达式,直接把两个数组合并:
    $map($$.Values, function($v, $i) {
      {
        "time": $$.TimeStamps[$i],
        "value": $v,
        "metric": $$.Keyinfo.Name
      }
    })
    
    这个表达式会遍历Values里的每个数值,同时取对应索引位置的时间戳,直接拼成标准的时间序列结构。

注意点

  • 如果返回的是多组指标(比如多个位置的传感器数据),只要保留Location或者Keyinfo.Name这类区分字段,两种方法都能正常处理。
  • 要是原始时间格式Grafana识别不了,要么在转换字段类型时指定格式,要么用JSONata的时间函数转成标准时间戳格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:22:34