InfluxDb: Как я могу объединить два измерения, которые не совпадают по метке времени, в новый временной ряд?

Мы внедряем 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" (где значение - это число пропущенных значений, а 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, мне нужно получить последнюю версию прошивки для этого конкретного идентификатора устройства и объединить ее с остальными тегами и полями отсутствующих значений, чтобы сформировать "missing_values_with_firmware". Цель состоит в том, чтобы иметь возможность (псевдокод) выбрать "deviceId, avg(value/batchSize) из missing_values_with_firmware" для анализа влияния микропрограммы на качество данных.

Каков наилучший подход для этого? Я попытался создать непрерывный запрос, но у меня возникли проблемы с тем, как разобраться в том, как выполнить часть выбора для выбора времени, значения, размера пакета, идентификатора устройства, (выбрать последний (значение) из прошивки, где deviceId = m.deviceId и время <= м.время)

Будет ли kapacitor лучшей альтернативой?

0 ответов

Другие вопросы по тегам