Esper系列(十)NamedWindow语法delete、Select+Delete、Update

来源:互联网 发布:spss信度分析 输入数据 编辑:程序博客网 时间:2024/06/14 22:27
On-Delete With Named Windows

功能:在Named Windows中删除事件.

格式:

on event_type[(filter_criteria)] [as stream_name]delete from window_or_table_name [as stream_name][where criteria_expression]

说明:

Criteria_expression为删除事件的条件.

例子:

// 构造windowString nwsql = "create window myWindow.win:keepall() as orderEvent";EPStatement nwstate = epAdmin.createEPL(nwsql);// 想window中插入事件String insql = "insert into myWindow select * from orderEvent";EPStatement instate = epAdmin.createEPL(insql);// delete String epsql = "on orderBean (value>50) as ob delete from myWindow as mw where mw.salary=111";

 

Triggered Select+Delete: the On Select Delete clause

功能:从named window查询出结果的同时删掉查询结果.

格式:

// 构造windowString nwsql = "create window myWindow.win:keepall() as orderEvent";EPStatement nwstate = epAdmin.createEPL(nwsql);// 向windwo中插入事件String insql = "insert into myWindow select * from orderEvent";EPStatement instate = epAdmin.createEPL(insql);// select+deleteString epsql = "on orderBean (value>50) as ob select and delete * from myWindow as mw where mw.salary=111";

注意:最后执行的查询加删除EPL中,删除的是mw.salary=111中的orderBean事件和myWindow中的事件.

On-Update With Named Windows

功能:更新window中事件.

格式:

on event_type[(filter_criteria)] [as stream_name]update window_or_table_name [as stream_name]set mutation_expression [, mutation_expression [,...]][where criteria_expression]

例一:

// 创建windowString nwsql = "create window myWindow.win:keepall() as orderBean";EPStatement nwstate = epAdmin.createEPL(nwsql);// 向window中插入数据String insql = "insert into myWindow select * from orderBean";EPStatement instate = epAdmin.createEPL(insql);// 更新操作String epsql = "on orderEvent(salary>0) as oe update myWindow as mw set mw.key=\"chenx\",mw.value=100 where mw.value=111 ";EPStatement epstate = epAdmin.createEPL(epsql);

功能:

当orderEvent 事件中的salary属性大于零,将myWindow中事件属性value值为111修改为100,并将key修改为 chenx。

说明:
1、在Window的update操作中,orderBean事件必须实现Serializable接口;
2、orderBean事件的属性必须要可写,且不能存在嵌套属性(Map、List等);
3、XML格式的事件不能通过此语句更新

例二:

// 更新操作String epsql = "on orderEvent(salary>0) as oe update myWindow as mw set mw.key=\"chenx\",mw.value=100 where oe.salary=111 ";EPStatement epstate = epAdmin.createEPL(epsql);

功能:这个更新语句与上一个更新语句差别在于where的条件判读不同,当orderEvent事件中的salary大于0且等于111的时候,将myWindow中的所有事件的key属性修改为 chenx,value属性修改为100。

例三:

on UpdateEvent as upd  update MyWindow as win  set field_a = 1,  field_b = win.field_a, field_c = initial.field_a 

说明:

field_a被更新为1,然后用修改后的field_a赋值给field_b,那么field_b实际上也变成1了。但是如果想用更新前的field_a的值赋给field_c,那么就要写成initial.field_a。initial是关键字,所以不能省略。

0 0