因为需要用Grafana通过MySQL数据库展示数据,所以让只会增删改查的我学习了一把,下面就把学习到的全部记录一下,就直接用到的函数+实例来展示~

首先,你需要知道表内可用的字段:

>desc 表名称;

grafana的mysql仪表盘不显示数据 grafana展示mysql数据_mysql

 然后根据Grafana你想展示的数据源写sql语句

表格(Table)

格式:select 字段1,字段2,字段3,... from 表名称 

例如:Grafana表格数据的展示——ORDER BY time DESC是按序排列,会返回最新的时间戳

这里的发布人(build_causer)字段数据是很长的,这里用substring_index函数只取最后的字符串

SELECT
  build_exec_time as time,
  project_name as '系统名称',
  substring_index(build_causer,' ',-1) as '发布人',
  build_number as '构建编号',
  build_result as '发布结果',
  build_time/1000 as '构建时间'
from 
  sql_jenkins
ORDER BY time DESC

grafana的mysql仪表盘不显示数据 grafana展示mysql数据_字段_02

 计数(Stat)

总数:

格式:select count(字段) from 表名称 

例:select coun(build_result) from sql_jenkins;

译:查询sql_jenkins表然后计算build_result字段的总数

 当月总数:

格式:

select count(字段) from 表名称 where from_unixtime(round(时间字段/1000),'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m')

这里的时间字段是13位时间戳,因为是当月,转换的格式就是/1000,‘用到的日期格式’,round是四舍五入取整数,加上函数from_unixtime,然后等于后面的时间,CURDATE()返回当前的时间,‘转换年月’,加上函数DATE_FORMAT

例:

select count(project_name) from sql_jenkins where from_unixtime(round(build_exec_time/1000),'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m')

译:查询sql_jenkins表然后计算project_name字段的当月总数

 本周总数:

格式:

select count(字段) from 表 where YEARWEEK(from_unixtime(round(时间字段/1000,'%Y-%m-%d'))) = YEARWEEK(now())

这里用到的是YEARWEEK函数:计算日期是本年的第几个星期,范围是 0 到 53,然后把时间字段的周数和现在的时间周数作比较,等于就是本周

例:

select count(project_name) from sql_jenkins where YEARWEEK(from_unixtime(round(build_exec_time/1000,'%Y-%m-%d'))) = YEARWEEK(now())

译:查询sql_jenkins表然后计算project_name字段的本周总数

 每日总数:

格式:

select count(字段) from 表 where to_days(from_unixtime(round(时间字段/1000),'%Y-%m-%d')) = to_days(now());

跟周一样,这里是用to_days函数取天的值跟现在的时间作比较

例:

select count(project_name) from sql_jenkins where to_days(from_unixtime(round(build_exec_time/1000),'%Y-%m-%d')) = to_days(now());

译:查询sql_jenkins表然后计算project_name字段的每日总数

 总结:因为是时间戳格式的数据类型,所以需要先转换,如果是直接写入数据库当前的日期格式可以直接对应函数去用。多在终端数据库使用select命令试验,一条命令如果不返回结果,就把整条命令截取开,一段一段的试,都没问题再组合一起。