2011-07-29 45 views
0

尋找解決方案相當長的時間:Esper:注意,當事件數量(具體參數)超過閾值時

我有一個聯繫表。每當有人通過它發送一封郵件時,一個ContactEvent(receiver,senderIpAddress)被髮給Esper。現在,我希望Esper通知我,當一個特定的IP地址在10分鐘內發出超過50個聯繫事件時。下面

代碼語法錯誤是由於代碼的簡化

create window ContactWindow.win:time(10 min) as select ipAddress, mail from ContactEvent 

然後我填充它是這樣的:

insert into ContactWindow select ipAddress, mail from ContactEvent"; 

最後,對這樣的一個事件偵聽:

select ip, count(ip) as cnt from ContactWindow group by ip 

其中實際工作。這不完全是我想要的,因爲每次發出我的語句監聽器時,ip地址的消息計數都會改變。 (「IP X在過去10分鐘內發送了43條消息」,「IP X在過去10分鐘內發送了44條消息」,...) 我只想告訴我一個事件「IP X超過50條消息在過去的10分鐘內「,另一個人告訴我,現在已經跌破邊界。

有沒有辦法讓這個工作?

回答

1

也許加個having clause。在你的例子中

select ip, count(ip) as cnt from ContactWindow group by ip having count(ip)>50