Я работаю с некоторыми SQL данными, отслеживающими состояние работы насосов. Состояние работы насоса равно 0 или 1 (0 = не работает, 1 = работает). В результате получается график, который выглядит следующим образом:
Циклы насоса
Как можно считать последовательные циклы работы (т. Е. Плато) как один цикл?
Таблица SQL выглядит следующим образом:
Timestamp Pump Run Status
2020-03-30 6:00:00 UTC 0
2020-03-30 6:01:00 UTC 1
2020-03-30 6:02:00 UTC 1
2020-03-30 6:03:00 UTC 0
2020-03-30 6:04:00 UTC 0
Следует отметить, что время не всегда разделяется одной минутой. Иногда это полторы минуты, иногда это может быть несколько минут. Поэтому я не думаю, что решение с разницей во времени сработает.
Я попытался суммировать все 1, но, очевидно, это всего лишь подсчет времени работы насосов, а не циклов. Другой вариант, о котором я подумал, - это использовать что-то вроде l oop. В псевдокоде это будет выглядеть примерно так:
for each row:
if run status != run status in next row:
increment counter
counter / 2
Я думаю, это будет учитываться при каждом изменении состояния запуска. Но есть ли векторное решение, о котором я не думаю?
Спасибо.