2011-07-29 4 views
0

해결책을 찾기에 꽤 오랜 시간이 걸립니다.Esper : 이벤트 수가 특정 임계 값을 초과하면

문의 양식이 있습니다. 누군가가 메일을 보낼 때마다 ContactEvent (receiver, senderIpAddress)가 Esper에게 발행됩니다. 이제는 특정 IP 주소가 10 분 안에 50 건 이상의 연락 이벤트를 발행 할 때 Esper에게 알려주고 싶습니다.

insert into ContactWindow select ipAddress, mail from ContactEvent"; 

결국,이 같은에서의 EventListener가 : 코드

구문 오류가 아래에 다음

create window ContactWindow.win:time(10 min) as 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