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

如何在Grafana中自动实现按类别拆分的value1累计值堆叠折线图?

适配动态类别的Grafana累计堆叠折线图实现方案

核心思路

利用Grafana Transforms的批量处理能力,无需手动逐个配置类别,自动适配category的新增、删除或名称变化场景,实现按类别拆分的value1累计值堆叠折线图。

具体操作步骤

1. 初始数据结构化转换

添加 Prepare time series 转换,配置如下:

  • Time field: 选择timestamp字段
  • Value fields: 仅勾选value1
  • Group by: 选择category字段
    此步骤会自动按每个category生成独立的时间序列帧,无需手动干预类别数量或名称。

2. 批量生成累计字段

添加 Add field from calculation 转换,配置:

  • Calculation: 选择「Running total(运行总计)」
  • Field: 选择「Apply to all fields」(或手动勾选所有value1字段)
  • 自定义字段名称(如累计value1)
    该转换会自动对所有帧的value1字段计算累计值,不管category有多少个,动态变化的类别都会被自动处理。

3. 过滤与合并序列

  • 添加 Filter fields by name 转换,仅保留刚才生成的累计字段(如累计value1),剔除原始value1字段。
  • 添加 Merge 转换,将多帧数据合并为单宽帧,适配堆叠折线图的数据格式要求。

4. 图表配置

选择「Stacked Line(堆叠折线图)」类型,在图例设置中按category分组,确保时间轴正确绑定timestamp字段,即可得到目标效果。

替代方案:JSONata一步转换

若熟悉JSONata语法,可直接用JSONata转换完成分组与累计计算,步骤更简洁:
添加JSONata转换,输入以下表达式(需根据实际数据结构微调):

// 按category分组,每组按timestamp排序后计算累计值
$data group by $.category ~> $each(function($group) {
  $sort($group, function($a, $b) { $a.timestamp < $b.timestamp }) ~> $reduce(function($acc, $item) {
    $merge([$item, {"累计value1": $acc.累计value1 + $item.value1}])
  }, {"累计value1": 0})
})

转换后直接过滤掉value2和原始value1字段,即可用于堆叠折线图展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:52:37