因为需要用Grafana通过MySQL数据库展示数据,所以让只会增删改查的我学习了一把,下面就把学习到的全部记录一下,就直接用到的函数+实例来展示~
首先,你需要知道表内可用的字段:
>desc 表名称;
然后根据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
计数(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命令试验,一条命令如果不返回结果,就把整条命令截取开,一段一段的试,都没问题再组合一起。