zoukankan      html  css  js  c++  java
  • Esper系列(十)NamedWindow语法delete、Select+Delete、Update

    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为删除事件的条件.

    例子:

    // 构造window
    String 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查询出结果的同时删掉查询结果.

    格式:

    // 构造window
    String 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+delete
    String 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]

    例一:

    // 创建window
    String 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是关键字,所以不能省略。

  • 相关阅读:
    嵌入式开发之davinci--- spi 中的时钟极性CPOL和相位CPHA
    Setting up a Single Node Cluster Hadoop on Ubuntu/Debian
    Install Java JDK JRE on Ubuntu/Debian with Apt-Get
    使用WICleanup清理Windows Installer 冗余文件
    WinSxS文件夹瘦身
    Linux时间同步+国内常用的NTP服务器地址
    How to fix Mysql table crashes
    Monitorix:一款面向Linux的轻型系统和网络监测工具
    How To Secure Apache with Let's Encrypt on Ubuntu (Free SSL)
    Latex表格太宽处理方法 (How to shorten Latex table length)
  • 原文地址:https://www.cnblogs.com/jianyuan/p/5028601.html
Copyright © 2011-2022 走看看