功能:用于存储一种或多种类型的事件的集合,并能对所存储的事件进行增删改查操作.

CreateNameWindow

根据已有的数据源构造

格式:

[context context_name] 
        create window window_name.view_specifications 
        [as] [select list_of_properties from] event_type_or_windowname
        [insert [where filter_expression]]

说明:

Window_name表示Window名称且具有全局唯一性,View_specification:表示过期策略;select子句表示需加入到新建window中的属性,数据源可以是已存在的事件或window;insert子句用于将已存在的window中的事件添加到新建的window中.

自定义

格式:

[context context_name] 
create window window_name.view_specifications [as] (column_name column_type 
  [,column_name column_type [,...])

说明:

Column_name表示属性名,column_type表示和苏醒类型,属性与属性之间用逗号分割。

结合注解

通过注解控制Listener中update收到的事件是Map还是数组。

例子:

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 语法一样。

例子:

// 创建window【myWindow】,过期策略为win:length_batch(3)
String nwsql = "create window myWindow.win:length_batch(3) as orderEvent";
EPStatement nwstate = epAdmin.createEPL(nwsql);
// 插入orderEvent事件
String insql = "insert into myWindow select * from orderEvent";
EPStatement instate = epAdmin.createEPL(insql);
// 查询myWindow中的数据
String epsql = "select name as result from myWindow ";
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中的事件达到某种关联后输出符合这个关联的事件或事件的部分属性。

格式:

on event_type[(filter_criteria)] [as stream_name]
[insert into insert_into_def]
select select_list
from window_or_table_name [as stream_name]
[where criteria_expression]
[group by grouping_expression_list]
[having grouping_search_conditions]
[order by order_by_expression_list]

说明:

Event_type表示触发的事件(window、pattern),filter_criteria表示触发事件的限制条件,as stream_name表示给触发事件命别名(可省)

例子:

文件名:orderMainTest.java

// 创建window
String nwsql = "create window myWindow.win:length(3) as orderEvent";
EPStatement nwstate = epAdmin.createEPL(nwsql);
// 向window中插入数据
String insql = "insert into myWindow select * from orderEvent";
EPStatement instate = epAdmin.createEPL(insql);
// 构造查询
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的更多相关文章

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

    On-Delete With Named Windows 功能:在Named Windows中删除事件. 格式: 1  ,   4  field_b = win.field_a,  5  field_ ...

  2. Esper系列(十一)NamedWindow语法Merge、Queries、Indexing、Dropping

    On-Merge With Named Windows 功能:对window中的insert.update.delete操作进行组合运用. 格式: 1  "; 14      15  Sys ...

  3. 使用INSERT…SELECT语法插入记录(三十二)

    前面,我们在谈INSERT语句时,使用两种语句:INSERT…SELECT  和  INSERT…VALUES. INSERT…SELECT可以使用子查询.因为在写SELECT时.  ***  =   ...

  4. 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 阅读 ...

  5. SQL系列(十二)—— insert update delete

    前言 这个系列的前面都一直在介绍查询select.但是SQL中十分广泛,按对数据的不同处理可以分为: DML:全称Data Manipulation Language,从名字上可以看出,DML是对数据 ...

  6. 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法

    之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...

  7. SQL语法基础之SELECT

    SQL语法基础之SELECT 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SELECT查看帮助信息 1>.查看SELECT命令的帮助信息 mysql> ? SEL ...

  8. 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法

    由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...

  9. oracle 中 insert select 和 select insert 配合使用

    Insert Into select 与 Select Into 哪个更快? 在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SEL ...

随机推荐

  1. 银联SDK

    最近在开发一个app,需要调用银联的sdk控件,银联提供的demo可以正常运行,但是自己的程序却怎么都编译不通过,到底有哪些需要注意的呢?? 具体的有可能会出现哪些错误我就不列举了,我只是提下有哪些需 ...

  2. 使用Yeoman搭建 AngularJS 应用 (2) —— 让我们搭建一个网页应用

    原文地址:http://yeoman.io/codelab/index.html 使用Yeoman搭建简单的应用 今天将会搭建一个简单的网页程序.你将可以添加,删除,拖拽和保存. 浏览Yeoman Y ...

  3. css中table-layout:fixed 属性的用法

    table-layout:fixed 属性的用法:如果想要一个table固定大小,里面的文字强制换行(尤其是在一长串英文文本,并且中间无空格分隔的情况下),以达到使过长的文字 不撑破表格的目的,一般是 ...

  4. 分布式系统之CAP理论

    任老师第一节主要讲了分布式系统实现时候面临的八个问题,布置的作业就是这个,查询CAP理论. 笔者初次接触分布式,所以本文主要是一个汇总. 一.CAP起源 CAP原本是一个猜想,2000年PODC大会的 ...

  5. 什么是 DevSecOps?系列(一)

    什么是 DevSecOps? 「DevSecOps」 的作用和意义建立在「每个人都对安全负责」的理念之上,其目标是在不影响安全需求的情况下快速的执行安全决策,将决策传递至拥有最高级别环境信息的人员. ...

  6. java客户端连接MongoDB数据库的简单使用

    1.下载mongoDB的jar包,并引入到工程的CLASSPATH中下载:mongodb2.5驱动包下载 如果使用maven项目,最新的依赖如下: <dependency> <gro ...

  7. Memcached总结一:memcached简介及适用和不适应场景

    Memcached是免费的,开源的,高性能的,分布式内存对象的缓存系统(键/值字典),旨在通过减轻数据库负载加快动态Web应用程序的使用. Memcached是由布拉德·菲茨帕特里克(Brad Fit ...

  8. java区分大小写,使用TAB进行缩进,public类名只能有一个,而且文件名与类名保持一致.

    java的类必须大写 java区分大小写,使用TAB进行缩进,public类名只能有一个,而且文件名与类名保持一致. 在dos用上下箭头,调用已用过的命令

  9. 6个常见的 PHP 安全性攻击

    了解常见的PHP应用程序安全威胁,可以确保你的PHP应用程序不受攻击.因此,本文将列出 6个常见的 PHP 安全性攻击,欢迎大家来阅读和学习. 1.SQL注入 SQL注入是一种恶意攻击,用户利用在表单 ...

  10. Android开发中一些被冷落但却很有用的类和方法

    MediaMetadataRetriever 顾名思义,就是用来获取媒体文件一些相关信息的类.包括一首歌的标题,作者,专辑封面和名称,时长,比特率等等.如果是视频的话,可以获取视频的长宽,预览图. h ...