我们正在将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会更好吗?