需求
在进行查询操作时,会出现在某些时刻测点为空值的情况,在显示的时候不太美观,也不好做数据分析。这时候就需要对缺失值进行自动填补。
自动填充方法
Previous方法
当查询时间戳的值为空值时,用查询时间戳的前一个时间戳的值进行补值。
此方法支持所有数据类型。
//时间戳为6的温度测点(float),如果为空,则参考当前时间前一分钟内最近的一条记录,如果一分钟内没有记录,显示为空
select temperature from root.test.wf01.wt01 where time =6 fill(float[previous,1m])
//同上,hardware参考前86400000内最近一条有值的数据
select temperature,hardware from root.test.wf01.wt01 where time =86400000 fill(float[previous,1m],text[previous])
Linear方法
当查询时间戳的值为空值时,用查询时间戳的前一个时间戳的值和后一个时间戳的值进行线性补值。
不支持 Boolean、text
在版本0.10之后支持自动填充和分组结合
//1-50毫秒内每个5毫秒分组,如果这个组内没值,则参考前面一个组,如果前面组还是没有值,再参考前面的
//如果组内有值,则以一个组最后时间序列作为整个组的值
SELECT last_value(temperature) FROM root.test.wf01.wt01 GROUP BY([1, 50), 5ms) FILL (float[PREVIOUS])