1

我们正在将 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”时间序列中跟踪这些值的质量(其中 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”。目标是能够做(伪代码)“select deviceId, avg(value/batchSize) from missing_values_with_firmware”来分析固件对数据质量的影响。

这样做的最佳方法是什么?我已经尝试创建一个连续查询,但是我无法弄清楚如何做选择时间、值、批量大小、设备 ID 的子选择部分,(从 deviceId = m.deviceId 的固件中选择最后一个(值)和时间 <= m.time)

kapacitor 会是更好的选择吗?

4

0 回答 0