Получить последнее сохраненное значение в данный момент времени в influenxDB - PullRequest
0 голосов
/ 27 декабря 2018

Я храню значения своих датчиков температуры в базе данных influxDB, и я ищу специальный запрос.Каждый датчик отправляет измеренные данные, когда температура изменяется с определенным порогом, что означает, что все датчики не отправляют данные одновременно.Таким образом, датчик 1, а именно S1 отправит значение 1 (S1_v1) в момент t1.Затем S2 отправит S2_v2 в t2, S3 отправит S3_v3 в t3 и т. Д. Я бы хотел получить значения всех датчиков в данный момент времени t, чтобы вt2, возвращаемое значение S1 будет S1_v1 (последнее сохраненное значение).

Как я могу сделать это с помощью influenxDB, пожалуйста?Я надеюсь, что моя просьба достаточно ясна.Большое спасибо.

1 Ответ

0 голосов
/ 03 января 2019

Вы можете сохранить все данные вашего датчика в одном measurement.

Затем укажите tag имя для сохранения имени датчика.

Пример:

> select * from sensors;
name: sensors
time                name value
----                ---- -----
1547100000000000000 s1   500
1547200000000000000 s2   600
1547300000000000000 s3   700
1548000000000000000 s1   900
1548000000000000000 s2   800
1548000000000000000 s3   999

Чтобы извлечь последнее сохраненное значение всех датчиков в заданном временном диапазоне t, вы можете сделать следующее:

SELECT * FROM sensors 
 WHERE time >= 1547000000000000000 and time <= 1547300000000000000
 GROUP BY "name" order by desc limit 1;

Выход:

name: sensors
tags: name=s3
time                value
----                -----
1547300000000000000 700

name: sensors
tags: name=s2
time                value
----                -----
1547200000000000000 600

name: sensors
tags: name=s1
time                value
----                -----
1547100000000000000 500

Приведенный выше запрос, по сути, группирует данные всех ваших датчиков в отдельные сегменты на основе вашего фильтра времени.Затем ORDER BY DESC служит для сортировки их по убыванию, чтобы первая строка всегда была точкой с наибольшим временем.Limit 1 просто просит механизм запросов вернуть вам верхнюю 1 строку.

...