表結(jié)構(gòu)
CREATE TABLE `monitor_metric_record` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`target_id` varchar(50) NOT NULL COMMENT '目標(biāo)id',
`code` varchar(100) NOT NULL COMMENT '指標(biāo)編碼',
`value` decimal(20,4) DEFAULT NULL COMMENT '指標(biāo)值',
`create_time` bigint(20) NOT NULL COMMENT '指標(biāo)寫(xiě)入時(shí)間,13位毫秒值') ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
SQL
使用自定義的sql, time和metric是內(nèi)定的別名, 會(huì)自動(dòng)渲染曲線圖
,這里使用內(nèi)置變量$__from和$__to來(lái)篩選時(shí)間
SELECT create_time AS time,targer_id AS metric,value FROM monitor_metric_record WHERE create_time >= $__from AND create_time <= $__to and code='lag';

SQL不正確時(shí)的現(xiàn)象
1. 使用$__timeFilter函數(shù), 時(shí)間過(guò)濾不生效
下圖本意是要篩選6小時(shí)內(nèi)的數(shù)據(jù), 但是卻出現(xiàn)了7天前的數(shù)據(jù)
點(diǎn)擊Query inspetor查看執(zhí)行詳情, 發(fā)現(xiàn)生成的sql不正確, $__timeFilter函數(shù)將mysql中的FROM_UNIXTIME(), 作為一整個(gè)條件了


2. SELECT的time字段使用了FROM_UNIXTIME(create_time/1000), 導(dǎo)致時(shí)區(qū)不正確
如果時(shí)間的條件小于8小時(shí), 圖表渲染會(huì)報(bào)錯(cuò)Data outside time range, 但是如果大于8小時(shí), 前面8小時(shí)會(huì)沒(méi)有數(shù)據(jù)


