一、Insert and Remove Stream
1、
select * from com.ebc.updatelistener.User
只输出newEvents,不会输出oldEvents。即使加上isstream,也不会。
2、
select irstream * from com.ebc.updatelistener.User.win:length(5)
当达到第6个时,第1个会成为oldEvents。如果去掉irstream,则不会产生oldEvents。
二、Filter and Where-Clause
Filter:
select * from com.ebc.filterwhere.User(amount>=200).win:length(5)
where:
select * from com.ebc.filterwhere.User.win:length(5) where amount>=200
filter: 只有符合条件的event才进入view和触发updateListener。
where:所有event都会进入view,只有符合条件的event才触发updateListener。
三、聚合与分组
1、sum
//统计进入的5个event的总额
select sum(amount) from com.ebc.aggGroup.User.win:length_batch(5)
--UpdateListener
Integer sumV = (Integer) (newEvents[0].get("sum(amount)"));
2、groupby
初始数据
--view class User implements Serializable { private String name; private int age; private int amount; } --事件 runtime.sendEvent(new User("遥远1",1,1)); runtime.sendEvent(new User("遥远2",2,2)); runtime.sendEvent(new User("遥远1",3,3)); runtime.sendEvent(new User("遥远2",4,4)); runtime.sendEvent(new User("遥远1",5,5)); runtime.sendEvent(new User("遥远6",6,6));
情况1:
--epl select name,sum(amount) from com.ebc.aggGroup.User.win:length_batch(5) group by name --输出 name=遥远2,sumV=6 name=遥远1,sumV=9
情况2:
--epl select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name --输出 name=遥远1,sumV=9,age=1 name=遥远2,sumV=6,age=2 name=遥远1,sumV=9,age=3 name=遥远2,sumV=6,age=4 name=遥远1,sumV=9,age=5
情况3:
--epl select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name,age --输出 name=遥远1,sumV=1,age=1 name=遥远2,sumV=2,age=2 name=遥远1,sumV=3,age=3 name=遥远1,sumV=5,age=5 name=遥远2,sumV=4,age=4
如果情况3的epl不变,修改发送数据,即红色部分
runtime.sendEvent(new User("遥远1",1,1)); runtime.sendEvent(new User("遥远2",2,2)); runtime.sendEvent(new User("遥远1",1,3)); runtime.sendEvent(new User("遥远2",4,4)); runtime.sendEvent(new User("遥远1",1,5)); runtime.sendEvent(new User("遥远6",6,6));
则输出
name=遥远1,sumV=9,age=1 name=遥远2,sumV=2,age=2 name=遥远2,sumV=4,age=4
group by总结
--只对name分组来sum,age不参与 select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name --对name、age分组来sum select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name,age