如何在Grafana时序图中按商品展示价格的时间变化趋势?
解决Grafana时序图展示多商品价格趋势的问题
原始数据表
| ID | sale_date | item | price |
|---|---|---|---|
| 1 | 2022-11-01 | apple | 2.11 |
| 2 | 2022-11-02 | apple | 2.61 |
| 3 | 2022-11-03 | apple | 2.91 |
| 4 | 2022-11-04 | apple | 2.51 |
| 5 | 2022-11-01 | orange | 3.23 |
| 6 | 2022-11-02 | orange | 2.75 |
| 7 | 2022-11-03 | orange | 3.01 |
| 8 | 2022-11-04 | orange | 3.51 |
| 9 | 2022-11-01 | banana | 1.93 |
| 10 | 2022-11-02 | banana | 2.22 |
| 11 | 2022-11-03 | bananna | 2.13 |
| 12 | 2022-11-04 | banana | 1.53 |
注意:数据表中ID11的item存在拼写错误(bananna应为banana),建议先修正数据,否则香蕉的价格趋势会出现断点。
需求
在Grafana时序图中展示苹果、橙子、香蕉的价格随时间变化的趋势,实现多线条分别对应不同商品的效果。
现有查询问题
你的查询里group by sale_date, item, price属于多余操作——每条记录已经是唯一的日期+商品组合,分组不会改变结果,反而会增加不必要的计算。另外,需要明确指定Grafana识别图例字段的规则。
正确查询语句
SELECT $__time(sale_date), -- Grafana自动处理时间格式适配时序图 price AS "value", -- 指定时序图的数值字段为price item AS "metric" -- 指定图例字段为item,让Grafana按商品分组生成对应线条 FROM mytable WHERE $__timeFilter(sale_date) -- 适配Grafana的时间范围选择器 AND item IN ('apple', 'orange', 'banana') -- 可选:仅筛选目标商品,过滤无关数据
Grafana面板配置步骤
- 添加时序图面板,选择对应的数据源
- 粘贴上述查询语句
- 在面板的可视化设置中:
- 确认图例选项已开启,图例字段会自动识别为
item的取值 - 可根据需求调整线条样式、颜色、坐标轴标签等
- 确认图例选项已开启,图例字段会自动识别为
完成后即可生成多线条时序图,每条线对应一种商品的价格变化趋势。
内容的提问来源于stack exchange,提问作者cozzymotto
相关产品推荐
相关产品推荐

