Esper系列(九)NamedWindow语法create、Insert、select
功能:用于存储一种或多种类型的事件的集合,并能对所存储的事件进行增删改查操作.
CreateNameWindow
根据已有的数据源构造
格式:
1 | [context context_name] |
2 | create window window_name.view_specifications |
3 | [as] [select list_of_properties from] event_type_or_windowname |
4 | [insert [where filter_expression]] |
说明:
Window_name表示Window名称且具有全局唯一性,View_specification:表示过期策略;select子句表示需加入到新建window中的属性,数据源可以是已存在的事件或window;insert子句用于将已存在的window中的事件添加到新建的window中.
自定义
格式:
1 | [context context_name] |
2 | create window window_name.view_specifications [as] (column_name column_type |
3 | [,column_name column_type [,...]) |
说明:
Column_name表示属性名,column_type表示和苏醒类型,属性与属性之间用逗号分割。
结合注解
通过注解控制Listener中update收到的事件是Map还是数组。
例子:
1 | String nwsql = "@EventRepresentation(array=true) create window myWindow.win:length_batch(3) as orderEvent"; |
说明:
其中array=true表示数组,array=false表示Map
Inserting Into Named Windows
与前面章节的事件Insert into 语法一样。
例子:
1 | // 创建window【myWindow】,过期策略为win:length_batch(3) |
2 | String nwsql = "create window myWindow.win:length_batch(3) as orderEvent"; |
3 | EPStatement nwstate = epAdmin.createEPL(nwsql); |
4 | // 插入orderEvent事件 |
5 | String insql = "insert into myWindow select * from orderEvent"; |
6 | EPStatement instate = epAdmin.createEPL(insql); |
7 | // 查询myWindow中的数据 |
8 | String epsql = "select name as result from myWindow "; |
9 | EPStatement epstate = epAdmin.createEPL(epsql); |
10 | epstate.addListener(new orderListener()); |
说明:
1、创建完myWindow后,myWindow中的数据集还是空,必须在insert数据后才会有数据;
2、当执行查询操作时,先检查是否满足创建Window中的过期策略,再检查是否满足查询语句中的过滤条件,只有在两边条件都满足的情况下,才会将事件输出;
3、若将查询语句改为select name as result from myWindow.win:length_batch(3)执行将会报错,因为在创建window中应使用了win的view,所以在查询语句中不能再使用;
4、select句子中的filter如果使用了variable,当变量的值在句子创建后改变了,引擎不会读取新的值。
On-Select With Named Windows
Named Windows中一种更好的查询方式,可以设置这个触发事件满足什么要求才可触发,或者这个触发事件和window中的事件达到某种关联后输出符合这个关联的事件或事件的部分属性。
格式:
1 | on event_type[(filter_criteria)] [as stream_name] |
2 | [insert into insert_into_def] |
3 | select select_list |
4 | from window_or_table_name [as stream_name] |
5 | [where criteria_expression] |
6 | [group by grouping_expression_list] |
7 | [having grouping_search_conditions] |
8 | [order by order_by_expression_list] |
说明:
Event_type表示触发的事件(window、pattern),filter_criteria表示触发事件的限制条件,as stream_name表示给触发事件命别名(可省)
例子:
文件名:orderMainTest.java
1 | // 创建window |
2 | String nwsql = "create window myWindow.win:length(3) as orderEvent"; |
3 | EPStatement nwstate = epAdmin.createEPL(nwsql); |
4 | // 向window中插入数据 |
5 | String insql = "insert into myWindow select * from orderEvent"; |
6 | EPStatement instate = epAdmin.createEPL(insql); |
7 | // 构造查询 |
8 | String epsql = "on orderBean (value>50) as ob select * from myWindow as mw"; |
注意:
1、最后的构造查询EPL语句中,返回的数据有myWindow中的事件也有orderBean的事件。
2、若只想返回myWindow中的事件需将EPL改为:on orderBean (value>50) as ob select mw.* from myWindow as mw。
Esper系列(九)NamedWindow语法create、Insert、select的更多相关文章
- Esper系列(十)NamedWindow语法delete、Select+Delete、Update
On-Delete With Named Windows 功能:在Named Windows中删除事件. 格式: 1 , 4 field_b = win.field_a, 5 field_ ...
- Esper系列(十一)NamedWindow语法Merge、Queries、Indexing、Dropping
On-Merge With Named Windows 功能:对window中的insert.update.delete操作进行组合运用. 格式: 1 "; 14 15 Sys ...
- 使用INSERT…SELECT语法插入记录(三十二)
前面,我们在谈INSERT语句时,使用两种语句:INSERT…SELECT 和 INSERT…VALUES. INSERT…SELECT可以使用子查询.因为在写SELECT时. *** = ...
- Oracle中复制表的方法(create as select、insert into select、select into)
转: Oracle中复制表的方法(create as select.insert into select.select into) 2018-07-30 22:10:37 小白白白又白cdllp 阅读 ...
- SQL系列(十二)—— insert update delete
前言 这个系列的前面都一直在介绍查询select.但是SQL中十分广泛,按对数据的不同处理可以分为: DML:全称Data Manipulation Language,从名字上可以看出,DML是对数据 ...
- 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法
之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...
- SQL语法基础之SELECT
SQL语法基础之SELECT 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SELECT查看帮助信息 1>.查看SELECT命令的帮助信息 mysql> ? SEL ...
- 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法
由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...
- oracle 中 insert select 和 select insert 配合使用
Insert Into select 与 Select Into 哪个更快? 在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SEL ...
随机推荐
- checking it the current os is a 32bit or 64bit version 检查操作系统是32位还是64位
) { Console.WriteLine("32bit os"); } ) { Console.WriteLine("64bit os"); }
- Cocos2dx坐标转换
Cocos2dx坐标转换 这段时间加班有点猛,没有太多时间来写博客了,ok,继续完成任务: 前言 这里将会重点介绍四个函数: convertToNodeSpace convertToNodeSpace ...
- mongodb 全文检索
MongoDB 全文检索 全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式. 这个过程类似于通过 ...
- U3D版本《暗黑世界V1.0》编译——图文教程!
原地址:http://blog.csdn.net/uxqclm/article/details/11970773 欢迎来到9秒:www.9miao.com 说明: A. 工具准备: ...
- 【形式化方法:VDM++系列】1.前言
1.前言 今天开始上课学习软件需求分析与VDM++,经过一节课的学习,我又增长了见识. 软件需求工程在软件工程中处于十分核心的地位:需求分析的好坏直接决定软件工程的成败.这一点是我之前对需求工程的理解 ...
- [JAVA]各种杂七杂八的东西......
BigInteger / BigDecimal / string 一些常用的函数: 加 add减 substract乘 multiply除 divid取余 mod / remainder (remin ...
- Android EditText的常用技巧
1. 设定 EditText 的滚动条.对齐方式.行数.和提示 (hint) 及其颜色 在布局文件,比如 main.xml 中,增加 < EditText android:id = ...
- HDU 4009 不定根最小树形图
讲一下建图过程,首先建立一个超级源点S,对于这个源点,向每个HOUSE连一条有向边,权值为该HOUSE建立WELL的费用,即高度*X. 然后每个可以连边的WELL之间,费用为曼哈顿距离*Y,然后考虑两 ...
- absolute和relative的几个Demo
这些例子最好通过FireFox结合FireBug调试查看 1.absolute让元素inline-block化 <!DOCTYPE html> <html xmlns="h ...
- XBMC 最新版本错误
1. Syntax error: "(" unexpected 修改 tools/depends下的makefile.include 将NDK_VER=0x9d