现在时序数据库的表包含:real
,warning
,dl
,kg
,由于这些表每隔几秒存入数据,如果想获得按小时、按天、按月、按年的数据库,不可能直接从这些表中实时计算而获得,而是让时序数据库自动按小时、按天、按月、按年统计数据,比如形成realtj
,warningtj
,dltj
,kgtj
类似的统计表,然后从这些统计表中获取数据。
TDegnine
提供了一种高级功能叫Continus Query连续查询
,通过滑动窗口
来统计数据。什么叫滑动窗口
?
滑动窗口
大致有一个interval属性和forward sliding times. interval理解成时间间隔或者步长,就是每次统计多长时间段内的数据。forward sliding times理解成频率,每隔多长时间实时计算一次。
现在目标是,把实时数据通过连续查询保存到另外创建的表。
创建数据库:create database liqun_nuode_1_1
删除数据库:drop database liqun_nuiode_1_1
查看所有数据库: show databases
创建超级表:create table liqun_nuode_1_1.superreal (ts timestamp,...) tags (mac binary(20))
创建子表:create table liqun_nuode_1_1.real using liqun_nuode_1_1.superreal tags ('187ED5316058','1')
子表插入数据:insert into liqun_nuode_1_1.real using liqun_nuode_1_1.superreal tags ('187ED5316058') values ()()
查找某个子表: select * from liqun_nuode_1_1.real where mac=`187ED5316058`
实时数据
1、创建关于统计的超级表:create table liqun_nuode_1_1.superrealtj (ts timestamp, aal float, aam float, aah float, avl float, avm float, avh float, awl float, awm float, awh float, atl float, atm float, ath float, aldl float, aldm float, aldh float, bal float, bam float, bah float, bvl float, bvm float, bvh float, bwl float, bwm float, bwh float, btl float, btm float, bth float, bldl float, bldm float, bldh float, cal float, cam float, cah float, cvl float, cvm float, cvh float, cwl float, cwm float, cwh float, ctl float, ctm float, cth float, cldl float, cldm float, cldh float, nal float, nam float, nah float, ntl float, ntm float, nth float, nldl float, nldm float, nldh float) tags (mac binary(20), addr binary(5))
2、定义把实时查询数据放入统计子表,并创建子表:create table liqun_nuode_1_1.realtj using liqun_nuode_1_1.superrealtj tags ('187ED5316058','1') as select MIN(aa), AVG(aa), MAX(aa), MIN(av), AVG(av), MAX(av), MIN(aw), AVG(aw), MAX(aw), MIN(at), AVG(at), MAX(at), MIN(ald) AVG(ald), MAX(ald), MIN(ba), AVG(ba), MAX(ba), MIN(bv), AVG(bv), MAX(bv), MIN(bw), AVG(bw), MAX(bw), MIN(bt), AVG(bt), MAX(bt), MIN(bld), AVG(bld), MAX(bld), MIN(ca), AVG(ca), MAX(ca), MIN(cv), AVG(cv), MAX(cv), MIN(cw), AVG(cw), MAX(cw), MIN(ct), AVG(ct), MAX(ct), MIN(cld), AVG(cld), MAX(cld), MIN(na), AVG(na), MAX(na), MIN(nt), AVG(nt), MAX(nt), MIN(nld), AVG(nld), MAX(nld) from liqun_nuode_1_1.superreal where mac='187ED5316058' and addr='1' INTERVAL(1M)
(a表示毫秒,s表示秒,m表示分钟,h表示小时,d表示天,w表示周,n表示月,y表示年)
3、查看:show streams
4、删除:kill stream
5、查询:select * from liqun_nuode_1_1.superrealtj where '2018-06-01 08:00:00.000' AND ts <= '2018-06-02 08:00:00.000' AND mac='187ED5316058' AND adrr='1'
报警统计
1、定义报警统计的超级表:create table liqun_nuode_1_1.superwarningtj (ts timestamp, typesl int, levelsl int) tags (mac binary(20), addr binary(5), type int, level int)
2、报警统计实时查询定义,并保存到子表
create table liqun_nuode_1_1.warningtj using liqun_nuode_1_1.superwarningtj tags ('187ED5316058','1',1,1) as select SUM(type), SUM(level) from liqun_nuode_1_1.superwarningtj where mac='187ED5316058' and addr='1' and type=1 and level=1 INTERVAL(1M)
开关统计
1、定义开关统计的超级表:
create table liqun_nuode_1_1.superkgtj (ts timestamp, sl int) tags (mac binary(20), addr binary(5), oc bool)
2、开关统计实时查询定义,并保存到子表
create table liqun_nuode_1_1.kgtj using liqun_nuode_1_1.superkgtj tags ('187ED5316058','1',true) as select from liqun_nuode_1_1.superkgtj where mac='187ED5316058' and addr='1' and oc=true INTERVAL(1M)