InfluxDb:如何将两个时间戳不匹配的测量值组合成一个新的时间序列?

时间:2017-10-12 07:07:18

标签: influxdb kapacitor

我们正在将InfluxDb引入我们的组织,并且遇到了我们的第一个障碍:将两个时间序列组合成一个。

每隔24小时,我们会从大量设备中收集固件数据。他们最终的测量结果或多或少如下:

time                 deviceId                               value
----                 -------                               -----
1506808800000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.1
1506808800000000000  db7c5414-ae9e-4303-bafe-b0d70a46d01b  2017.10.1
1506895200000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.2
1506895200000000000  db7c5414-ae9e-4303-bafe-b0d70a46d01b  2017.10.2
1506981600000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.3
1507327200000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.7
1507586400000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.10
1507704360000000000  db7c5414-ae9e-4303-bafe-b0d70a46d01b  2017.10.10
1507704360000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.11
1507704360000000000  ad0277c6-3513-4769-80f2-819516856e18  2017.10.10

有问题的设备也会生成某些值,我们会跟踪这些设备的质量如何在" missingValues" timeseries(其中value是缺失值的数量,batchSize是预期值的数量 - 值24表示100%丢失,0表示没有丢失):

----                ---------   -------                              -----
time                batchSize   deviceId                             value
1507413600000000000 24          ad0277c6-3513-4769-80f2-819516856e18 0
1507413600000000000 24          ad0277c6-3513-4769-80f2-819516856e18 3
1507413600000000000 24          ad0277c6-3513-4769-80f2-819516856e18 7
1507413600000000000 24          db7c5414-ae9e-4303-bafe-b0d70a46d01b 2

如上所述,固件时间序列每24小时更新一次,而missingValues时间序列则间歇性更新。当输入missingValues值时,我需要获取该特定设备ID的最新固件版本,并将其与剩余的缺失值标签和字段组合以形成" missing_values_with_firmware"。目标是能够做到(伪代码)"从missing_values_with_firmware"中选择deviceId,avg(value / batchSize)。分析固件对数据质量的影响。

这样做的最佳方法是什么?我尝试过创建一个连续的查询,但是我无法理解如何进行子选择部分 select time,value,batchsize,deviceId,(从固件中选择last(value),其中deviceId = m.deviceId和time< = m.time)

kapacitor会更好吗?

0 个答案:

没有答案