0
我有一個關於使用輸出子句結合命名的窗口,模式和INSERT INTO語句的問題。 我的目標是檢測不存在的事件,將其存儲在一個名爲窗口,當事件再次開始來選擇並刪除該行並用其作爲一種「在線」指示燈(見Esper - detect event after absence) 不知何故,我希望能夠限制在短時間內發生多個離線 - 在線事件時的事件發生率(禁用誤報)。我認爲輸出子句可以在這裏幫助,但是當我在插入語句中使用它時,沒有事件存儲在命名窗口中。這是正確的方法還是有其他方法來限制這種情況下的事件?與名爲Windows埃斯佩爾輸出條款
這是我在艾斯波EPL在線代碼:
create schema MonitorStats(id string, time string, host string, alert string);
create window MonitorWindow.win:keepall() as select id, alert, time, host from MonitorStats;
insert into MonitorWindow select a.id as id, 'offline' as alert, a.time as time, a.host as host from pattern
[every a=MonitorStats(id='1234') -> (timer:interval(25 sec) and not MonitorStats(id=a.id))];
on pattern[every b=MonitorStats(id='1234') -> (timer:interval(25 sec) and MonitorStats(id=b.id))]
select and delete b.id as id, 'online' as alert, b.time as time, b.host as host from MonitorWindow as win
where win.id = b.id;
感謝您的建議。我已經添加了我的EPL在線聲明。用你的例子,我仍然收到多個「在線」輸出。有沒有辦法簡化上述說明並將輸出第一個子句用於「離線」和「在線」事件?將 – user5526698
模式插入到DetectedStream中選擇並刪除....;每10秒首先從DetectedStream輸出中選擇*; (聽最後一條語句) – goodie
謝謝,但是通過這種方法,我從DetectedStream中獲得了第一個「脫機」事件,但不是第一個「脫機」 - 「在線」事件對嗎?我將如何實現這一目標? – user5526698