У меня есть данные в базе InfxDB от датчика двери. Это логический датчик (либо дверь открыта (значение false
), либо закрыта (значение true
)), а таблица выглядит так:
name: door
--------------
time value
1506026143659488953 true
1506026183699139512 false
1506026751433484237 true
1506026761473122666 false
1506043848850764808 true
1506043887602743375 false
Я хотел бы подсчитать, как долго дверь была открыта в данный период времени. Функция ELAPSED приближает меня, но я не уверен, как либо (а) ограничить его только теми интервалами, для которых начальное значение равно false
, либо (б) идентифицировать «открытые» интервалы из вывода чего-то вроде select elapsed(value, 1s) from door
.
Я надеялся, что смогу сделать что-то вроде:
select elapsed(value, 1s), first(value) from door
Но это не дает мне ничего полезного:
name: door
--------------
time elapsed first
0 true
1506026183699139512 40
1506026751433484237 567
1506026761473122666 10
1506043848850764808 17087
1506043887602743375 38
Я надеялся на нечто большее, например:
name: door
--------------
time elapsed first
1506026183699139512 40 true
1506026751433484237 567 false
1506026761473122666 10 true
1506043848850764808 17087 false
1506043887602743375 38 true
Если не считать самого извлечения данных и их обработки, например, python, есть ли способ сделать это с помощью запроса infxdb?