Мне нужна средняя скорость (датчик = 1) при разных настройках мощности 1-10 (датчик = 2). Я не хочу, чтобы скорости от датчика 1 включались в средний расчет, если они произошли до изменения настройки (датчик = 2).
Например. power_setting=1, скорость=50, скорость=60, power_setting=2, скорость=100, скорость=120
Если я взял временное окно около power_setting = 2, то оно может включать скорость для power_setting = 1.
Как я могу явно указать esper для расчета только со значениями, которые произошли после изменения настроек питания.
Вот мой текущий скрипт:
CREATE window SpeedWindow.win:time_batch(30 sec) as (speed double, power_setting int);
INSERT into SpeedWindow
SELECT
speedEvent.value as speed,
powerSetting.value as power_setting
FROM
Sensors(id = 1).std:lastevent() as speedEvent,
Sensors(id = 2).std:lastevent() as powerSetting;
INSERT into Output
SELECT
case
when SpeedWindowEvent.power_setting = 1 then 4154
when SpeedWindowEvent.power_setting = 2 then 4155
... etc ...
end as id,
avg(SpeedWindowEvent.speed) as value
FROM
SpeedWindow as SpeedWindowEvent
GROUP BY
SpeedWindowEvent.power_setting;