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

Grafana 10.2时间序列数据转换求助:计算时段电量差值

Grafana 10.2 实现时间序列数据转换方案

针对你的需求,直接用Grafana内置的Transform功能就能实现,不用依赖GroupBy,具体步骤如下:

1. 准备原始数据

确保你的面板(推荐用Table面板)已正确加载原始的Time和Power Value字段数据,能看到完整的时间序列条目。

2. 添加Transform转换操作

点击面板顶部的Transform标签,按顺序添加以下转换:

① 生成起始时间与起始功率

  • 点击「Add transformation」,选择「Add field from calculation」
  • 计算类型选「Custom」,输入表达式:first_time($Time),将字段命名为StartTime
  • 再次添加同类型转换,表达式:first($Power Value),字段命名为StartPower

② 生成结束时间与结束功率

  • 重复添加「Add field from calculation」,表达式:last_time($Time),字段命名为EndTime
  • 继续添加,表达式:last($Power Value),字段命名为EndPower

③ 计算功率差值(Power used)

  • 添加「Add field from calculation」,计算类型选「Custom」
  • 表达式:concat(string($EndPower - $StartPower), " (", string($EndPower), "-", string($StartPower), ")"),字段命名为Power used

    注:如果只需要数值,直接用$EndPower - $StartPower即可,上述表达式是为了生成带备注的文本格式

④ 整理字段并合并单行

  • 添加「Organize fields」转换,只保留StartTime、StartPower、EndTime、EndPower、Power used,移除原始的Time和Power Value字段
  • 添加「Reduce」转换,模式选择「Reduce rows」,所有字段的聚合函数都选「First」,这样会把重复的转换结果合并为单行

3. 调整显示样式

切换到「Panel options」或「Field settings」,可以调整表格字段的对齐方式、宽度、数值格式,让最终展示效果更贴合需求。

备选方案(查询层面处理)

如果你的数据源支持聚合函数(比如Prometheus),也可以直接在查询语句中生成所需字段:

  • 起始功率:first_over_time(power_metric[$__range])
  • 结束功率:last_over_time(power_metric[$__range])
  • 功率差值:last_over_time(power_metric[$__range]) - first_over_time(power_metric[$__range])
    这种方式适合固定时间范围的场景,Transform则更适合动态调整时间范围的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:55:11