在相当长的时间内寻找解决方案:
我有联系表格。每当有人通过它发送邮件时,都会向Esper发出ContactEvent(receiver,senderIpAddress)。现在,我希望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 addresse的消息计数会发生变化。 (“IP X在过去10分钟内发送了43条消息”,“IP X在过去10分钟内发送了44条消息”,......) 我只想让一个事件告诉我“IP X在过去10分钟内超过50条消息”,另一个告诉我,现在它已经降到了那个边界以下。
有没有办法让它发挥作用?
答案 0 :(得分:1)
可能会添加having clause。在你的例子中
select ip, count(ip) as cnt from ContactWindow group by ip having count(ip)>50