客户需求场景:存在事件低发时间段没有预警信息即显示为0,客户需要直观的看出这些低发时间段。
需求:图表x轴需要显示整点小时,0-23点,且不管是否有每个时间点有数据,x轴一定要显示全部时间点。效果如下图。
在产品中没有办法直接实现,没有数据的部分x轴不会显示,效果如下:
解决方式:在数据库进行处理,建一个码表,存放0-23每个小时的整点,数据表中存放的日期是字符串类型的日期,格式:‘年-月-日 时:分:秒’。然后将码表和数据表按照整点小时字段进行left join 。实现的sql如下:
select b.hour,s.name,s.a as '日期',DATE_FORMAT(str_to_date(s.a, '%Y-%m-%d %H'),"%H") AS '小时'
from mabiao b LEFT JOIN gaction_copy s
on b.hour=DATE_FORMAT(str_to_date(s.a, '%Y-%m-%d %H'),"%H")
实现原理:一定要让数据集中有每个整点的数据,如果数据表中没有对应时间的数据left join后为空,不影响显示。
|