前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用grafana让mysql数据生成折线图和柱状图

利用grafana让mysql数据生成折线图和柱状图

作者头像
用户1696846
发布2023-08-25 14:29:52
2.7K0
发布2023-08-25 14:29:52
举报
文章被收录于专栏:Android自学

step1

新建一个表testgraph,用来存放查询的数据。

表结构如下图:

可以手动创建,当然也可以使用sql语句创建,都可以,创建表的sql语句如下:

代码语言:javascript
复制
DROP TABLE IF EXISTS `testgraph`;
CREATE TABLE `testgraph`  (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `create_time` datetime(0) NULL DEFAULT NULL,
  `value` int(20) NULL DEFAULT NULL,
  `metric` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
SET FOREIGN_KEY_CHECKS = 1;

在表中添加如下数据,用来测试,注意create_time特意填入的日期每个都不一样,不是同一天。

至此,数据准备工作结束。

step2

打开grafana,选择折线图表并选择mysql数据源。

选择SQL Edit模式,在编辑框中输入以下sql语句:

代码语言:javascript
复制
SELECT
  create_time AS "time",
  value,metric 
FROM testgraph
WHERE
  $__timeFilter(create_time)
ORDER BY create_time desc

点击编辑框外的空白处,并在右上角的时间范围选择中选择近7天,图表会被显示出来,如下图:

我们来回顾一下sql语句的格式:

必须要在返回的结果集中有的三个字段是time, value,metric。

如果数据库中的字段名称不为这三个必须字段名,可以使用类似create_time AS "time"的形式将返回参数名进行别名命名。

下面将演示用AS之后和不用AS的区别:

如果你的数据表中设计的值字段和名称字段不为value和metric的话,也需要在查询语句中使用AS进行别名命名。

另外time字段也可以被别名成time_sec,经过我测试,二者都可以,暂时没发现区别是什么。

$__timeFilter(create_time)的含义是,将sql语句的where条件的时间段,替换成grafana中的用户自定义选择的时间段。

sql语句的其他部分不再赘述。

step3

我们尝试在同一个折线图中显示两条折线。

我们首先编辑数据表中的数据,将其编辑成如下内容:

你会发现,我在metric列中加入了支出这一个数据名。

你看到这里已经明白啦,我想要一条折线显示收入,一条折线显示支出

为了使step2中的数据和之前保持一致,我们修改上一步的sql语句,在其中加入限定的where条件:metric="收入" 。即我们的第一个折线的sql内容修改成:

代码语言:javascript
复制
SELECT
  create_time AS "time",
  value,metric 
FROM testgraph
WHERE
  $__timeFilter(create_time) AND metric="收入"
ORDER BY create_time desc

修改之后,我们点击Add Query,添加一个新的查询语句,并选择SQL Edit模式,输入以下sql语句:

代码语言:javascript
复制
SELECT
  create_time AS "time",
  value,metric 
FROM testgraph
WHERE
  $__timeFilter(create_time) AND metric="支出"
ORDER BY create_time desc
1
2
3
4
5
6
7
SELECT
  create_time AS "time",
  value,metric 
FROM testgraph
WHERE
  $__timeFilter(create_time) AND metric="支出"
ORDER BY create_time desc

点击编辑框外的空白处,sql将自动执行查询。

确定我们选择的时间段是最近7天之后,我们看到了两个折线在同一个图表中的情况。

其他

如果想要将数据改成柱状图,可以在如下配置:

grafana中的功能很完善,还待我们去发现。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • step1
  • step2
  • step3
  • 其他
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档