2017-06-15 72 views
0

我想在OpenTSDB中上采样时间序列。例如,假设我每隔8小时记录一次温度,例如每天凌晨1点,上午9点和下午5点。我希望通过TSDB查询检索这些数据的上采样,以便在凌晨1点,凌晨2点,上午3点,...下午5点,下午6点,...午夜我要填充“缺失”数据通过线性内插,例如,如何在tsdb中上采样时间序列

otemp(上午02点)= ITEMP(上午01点)+ 1/8 *(ITEMP(上午09点) - ITEMP(上午01点))

其中otemp是输出上采样结果和ITEMP是输入时间序列。

问题是OpenTSDB似乎只是愿意在多时间序列操作(如“sum”)的上下文中线性插入数据。现在,我可以提出我想创建另一个时间序列“ctemp”(“c”代表“时钟”)的解决方案,每1小时记录一次温度为0,然后让TSDB给我这个总和与itemp的时间序列。

我误解了OpenTSDB,有没有办法做到这一点,而不必创建虚假的“ctemp”系列?合理的东西,如:?

...开始= some_time &末= some_time &间隔= 1H & M =线性插值:ITEMP

? - Mark

回答

0

为了与在HBase上运行的Axibase TSD进行比较,可以使用WITH INTERPOLATE子句执行插值。

SELECT date_format(time, 'MMM-dd HH:mm') AS sample_time, 
    value 
FROM temperature 
    WHERE entity = 'sensor' 
    AND datetime BETWEEN '2017-05-14T00:00:00Z' AND '2017-05-17T00:00:00Z' 
    WITH INTERPOLATE(1 HOUR) 

命令示例:

series e:sensor d:2017-05-14T01:00:00Z m:temperature=25 
series e:sensor d:2017-05-14T09:00:00Z m:temperature=30 
series e:sensor d:2017-05-14T17:00:00Z m:temperature=29 
series e:sensor d:2017-05-15T01:00:00Z m:temperature=28 
series e:sensor d:2017-05-15T09:00:00Z m:temperature=35 
series e:sensor d:2017-05-15T17:00:00Z m:temperature=31 
series e:sensor d:2017-05-16T01:00:00Z m:temperature=22 
series e:sensor d:2017-05-16T09:00:00Z m:temperature=40 
series e:sensor d:2017-05-16T17:00:00Z m:temperature=33 

The result

sample_time  value 
May-14 01:00 25.0000 
May-14 02:00 25.6250 
May-14 03:00 26.2500 
May-14 04:00 26.8750 
May-14 05:00 27.5000 
... 

Interpolation

声明:我Axibase工作。