Истекшее время InfluxDB на основе заданного значения c - PullRequest
0 голосов
/ 19 марта 2020

Просто новичок в InfluxDB.

У меня есть контролируемый сигнал ввода-вывода, что при каждом его изменении InfluxDB будет записывать свою временную метку. Данные как показано ниже:

time                   value
----                   -----
2020-03-19 06:02:50    0
2020-03-19 06:01:28    1.00
2020-03-19 03:25:58    0  
2020-03-19 03:22:38    1.00
2020-03-18 23:07:47    0
2020-03-18 23:06:47    1.00
2020-03-18 21:14:47    0
2020-03-18 21:12:45    1.00
2020-03-18 21:11:23    0
2020-03-18 21:09:41    1.00
2020-03-18 21:07:30    0
...

Теперь я хочу получить истекшее время для значение = 1 ТОЛЬКО (что означает истекшее время, в течение которого коммутатор включен)

Сначала я попробовал SELECT elapsed("value")/3600/1000000000 FROM "MyMeasurement", затем я получил серию, подобную этой:

time                   elapsed
----                   -----
2020-03-19 06:02:50    0.02
2020-03-19 06:01:28    2.59
2020-03-19 03:25:58    0.06
2020-03-19 03:22:38    4.25
2020-03-18 23:07:47    0.02
2020-03-18 23:06:47    1.87
2020-03-18 21:14:47    0.03
2020-03-18 21:12:45    0.02
2020-03-18 21:11:23    0.03
2020-03-18 21:09:41    0.04
2020-03-18 21:07:30    0.02
...

как я могу сузить серию до тех, которые меня интересуют [0,02, 0,06, 0,02, 0,03, 0,03, 0,02 .. .]? Я должен сделать это в команде запроса InfluxDB, так как я вставляю это на панель Grafana. Может ли кто-нибудь помочь мне в этом, пожалуйста?

1 Ответ

0 голосов
/ 19 марта 2020

Вы можете использовать вложенный запрос. Попробуйте что-то вроде этого

SELECT elap FROM
      (SELECT difference("value") as diff, elapsed("value") as elap FROM "MyMeasurement")
WHERE diff > 0

Если значения в «значении» всегда равны 0 и 1, то разница между последовательными значениями будет 1 или -1. Вы можете использовать это как фильтр, чтобы получить elapsed только для тех записей, которые вы хотите. (Не уверен, что вам нужно брать 1 или -1, просто проверьте)

PS: У меня такое чувство, что я уже ответил на аналогичный вопрос о StackOverflow, но не смог его найти.

...