我想在OpenTSDB中对时间序列进行上采样。例如,假设我有8小时间隔记录的温度,例如每天凌晨1点,9点和5点。我想通过TSDB查询检索这些数据的上采样,以便我在凌晨1点,凌晨2点,凌晨3点,......,下午5点,下午6点,...午夜得到温度我希望填写“缺失”数据通过线性插值,例如,
otemp(2am)= itemp(1am)+ 1/8 *(itemp(9am) - itemp(1am))
其中otemp是输出上采样结果,itemp是输入时间序列。
问题是OpenTSDB似乎只愿意在像“sum”这样的多时间序列操作的上下文中线性插值数据。现在,我可以解决我想创建的另一个时间序列“ctemp”(“c”代表“时钟”),它每1小时记录一次0的温度,然后让TSDB给我这个总和迭代的时间序列。
我是否误解了OpenTSDB,有一种方法可以做到这一点而无需创建虚假的“ctemp”系列?有点合理的东西:
?...开始= some_time&安培;端= some_time&安培;间隔= 1H&安培; M =线性插值:ITEMP
? - 马克
答案 0 :(得分: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
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
...
免责声明:我为Axibase工作。