1.事件流分析
EPL语句从一个或多个事件流中派生和聚合信息,加入或合并事件流,并将一个时间流的结果提供给后续的语句。EPL在select语句和where语句的使用上,和SQL很类似,不过,EPL语句用事件流和views替换了数据库的表格。和SQL中表格相似,views定义了可用于查询和过滤的数据。views可以表示一个事件流上的一个窗口。views也可以排序事件、从事件属性获取统计数据、进行事件分组或者处理唯一的事件属性值。
select avg(price) from StockTickEvent.win:time(30 sec);计算股票事件过去30s的平均价格。
select symbol, avg(price) as averagePrice from StockTickEvent.win:length(100) group by symbol;前100条股票事件的平均值
下面的例子关联了两个事件流。第一个事件流由欺诈告警事件组成,用于保存过去30分钟的事件信息。第二个流则是withdrawal事件,用来保存过去30秒的事件。这两个流通过account number进行关联:
select fraud.accountNumber as accntNum,
fraud.warning as warn,
withdraw.amount as amount,
MAX( fraud.timestamp, withdraw.timestamp) as timestamp,
'withdrawlFraud' as desc from FraudWarningEvent.win:time(30 min) as fraud,
WithdrawalEvent.win:time(30 sec) as withdraw where fraud.accountNumber=withdraw.accountNumber</span>
2.事件模式匹配
Event patterns match when an event or multiple events occur that match the pattern's definition.当符合模式定义的一个或多个事件发生时,就认为事件模式匹配了。
模式也可以是基于时间的。模式匹配是通过状态机实现的。
模式表达式可以由连接了模式操作符的过滤器表达式组成。通过在圆括号中的嵌入表达式,可以实现更深的模式表达式嵌套。
5类操作符:
- 控制模式探测器的创建和终止:every