Esper系列(十一)NamedWindow语法Merge、Queries、Indexing、Dropping
来源:互联网 发布:spss信度分析 输入数据 编辑:程序博客网 时间:2024/06/14 17:59
功能:对window中的insert、update、delete操作进行组合运用。
格式:
参数说明:
1、where子句是将事件分为了matched(满足where条件)和not matched(不满足where条件)两类;
2、when子句配合matched或者not matched表示“window中满足where条件的事件,执行下面的操作/window中不满足where条件的事件,执行下面的操作”。search_condition为可选字段,表示再次过滤matched或not matched中的事件,只有没被过滤掉的事件才可以被then后面的语句操作;
3、insert子句和之前说的insert into不太一样。虽然都表示插入事件,但是由于into streamname是可选,所以在只有insert关键字的情况下,会将触发的事件插入到当前的named window中。如果要指明插入到别的named window中就要在insert之后带上into及window的名字。再之后的圆括号中的内容表示要插入的事件的属性,一般情况是在将事件插入到别的window中时,用它来重命名select中列出的属性;
4、select子句是配合insert一起使用的。select子句不可少,不然引擎就不知道要往window中插入什么内容了。select的内容可以是*,也可以是属性列表。where语句再一次限制可插入的触发事件。注意select后面没有from,因为事件来源就是当时的触发事件;
5、update子句用于更新符合条件的事件,可更新单个或多个属性,where条件判断是否可进行更新操作;
6、delete子句用于删除符合条件的事件,只包含关键字delete以及可选的where语句;
7、最后两行表示on merge中可以有多个when,每个when可以有多个then及insert或updata或delete语句,这样就能组成一个非常复杂的merge操作。
注意:
1、when not matched后面只能跟insert语句,而when matched则没有任何限制;
2、select语句中不能使用聚合函数;
3、当某一个when matched或者no matched和其search_condition满足,则这个when下的所有then都会执行,并且按照顺序执行;
4、避免在一个when中同时使用update和delete,esper不能保证两个都有效执行。
Using Fire-And-Forget Queries with Named Windows
以上的window操作,都需要在发送事件后进行触发,这个里给出一种不发送事件就能触发select/update/delete,且不需要设置监听就能得到结果的语法。
查询操作的格式:
修改操作的格式:
注:子查询,聚合函数等不能用于expression
删除操作的格式:
例子:
Explicitly Indexing Named Windows
功能:对Named Window中存放的事件属性建立索引。
格式:
格式说明:
1、Unique:表示建立唯一索引,如果插入了重复的行,则会抛出异常并阻止重复行插入。如果不使用此关键字,则表示可以插入重复行;
2、Index_name:索引名称;
3、后面的括号中包含named window中的属性以及索引类型。索引类型分两种,hash索引不会排序,如果有=操作,建议使用此类型索引。btree索引基于排序二叉树,适合<, >, >=, <=, between, in等操作。如果不显式声明hash或者btree,则默认为hash索引;
Dropping or Removing Named Windows
功能:
注销named window,方式是直接调用EPStatement对象的destroy方法。虽然注销,但是named window的名字仍然被占用着,所以你只能重新建立和之前的named window一样结构的window,否则会抛出异常
示例子:
- Esper系列(十一)NamedWindow语法Merge、Queries、Indexing、Dropping
- Esper系列(九)NamedWindow语法create、Insert、select
- Esper系列(十)NamedWindow语法delete、Select+Delete、Update
- Esper学习之十一:EPL语法(七)
- Indexing Basic MySQL Queries
- Esper系列(一)初探
- Esper系列(四)Output
- Indexing Strategies for Optimizing Queries on MySQL
- Esper 视图 Views窗口语法
- Media Queries语法总结
- Esper
- Esper
- esper
- merge语法
- merge语法
- Esper事件处理引擎_16_EPL 语法_8_NamedWindow
- Indexing
- indexing
- 经验积累
- Esper系列(八)Method Definition、Schema
- Esper系列(九)NamedWindow语法create、Insert、select
- 第8章:TTCN-3数据类型
- Esper系列(十)NamedWindow语法delete、Select+Delete、Update
- Esper系列(十一)NamedWindow语法Merge、Queries、Indexing、Dropping
- Esper系列(十二)Variables and Constants
- GH Bladed 软件使用学习笔记(2)
- Esper系列(十三)Splitting and Duplicating Streams
- Esper系列(十四)Contained-Event Selection
- Android源码解析Handler系列第(一)篇 --- Message全局池
- Docker系列(六)路由打通网络示例
- 【Java】interrupt、interrupted和isInterrupted的区别
- Docker系列(七)Shipyard安装及介绍