Esper epl语句实验

基础代码见下,下文列举的实验都是在此程序基础上改动。

all,snapshot,first

String epl = "select * from appTable.win:time(5 sec) output all every 2 seconds";
能够看到。输出时将事件从队列中移除。

已经输出的下次不再输出。

================
newEventName:appTable	name:0	age:0
newEventName:appTable	name:1	age:1
================
newEventName:appTable	name:2	age:2
newEventName:appTable	name:3	age:3
================
newEventName:appTable	name:4	age:4
newEventName:appTable	name:5	age:5
================
String epl = "select * from appTable.win:time(5 sec) output snapshot every 2 seconds";
输出的是快照,事件不从队列中移除。
================
newEventName:appTable	name:0	age:0
newEventName:appTable	name:1	age:1
newEventName:appTable	name:2	age:2
================
newEventName:appTable	name:0	age:0
newEventName:appTable	name:1	age:1
newEventName:appTable	name:2	age:2
newEventName:appTable	name:3	age:3
newEventName:appTable	name:4	age:4
================
newEventName:appTable	name:2	age:2
newEventName:appTable	name:3	age:3
newEventName:appTable	name:4	age:4
newEventName:appTable	name:5	age:5
================
String epl = "select * from appTable.win:time(5 sec) output first every 2 seconds";
仅仅输出进入窗体的第一条数据。

================
newEventName:appTable	name:0	age:0
================
newEventName:appTable	name:3	age:3
================
newEventName:appTable	name:5	age:5
================
newEventName:appTable	name:7	age:7
================

insert前后的时间窗体

String epl2 = "insert into appTable2 select t.id as id, t.price as price from appTable.win:time(5 sec) as t output all every 1 seconds";
String epl3 = "select * from appTable2.win:time(5 sec) output all every 5 seconds";
为epl3配置监听。
能够看到。第一个5秒就有输出。

第1秒
第2秒
第3秒
第4秒
第5秒
newEventName:appTable2	name:0	age:0
newEventName:appTable2	name:1	age:1
newEventName:appTable2	name:2	age:2
newEventName:appTable2	name:3	age:3
newEventName:appTable2	name:4	age:4
================
第6秒
第7秒
第8秒
第9秒
第10秒
newEventName:appTable2	name:5	age:5
newEventName:appTable2	name:6	age:6
newEventName:appTable2	name:7	age:7
newEventName:appTable2	name:8	age:8
newEventName:appTable2	name:9	age:9
================
第11秒

String epl2 = "insert into appTable2 select t.id as id, t.price as price from appTable.win:time(5 sec) as t output all every 5 seconds";
String epl3 = "select * from appTable2.win:time(5 sec) output all every 5 seconds";
为epl3配置监听。
能够看到,第二个5秒才有输出。

第1秒
第2秒
第3秒
第4秒
第5秒
第6秒
第7秒
第8秒
第9秒
newEventName:appTable2	name:0	age:0
newEventName:appTable2	name:1	age:1
newEventName:appTable2	name:2	age:2
newEventName:appTable2	name:3	age:3
newEventName:appTable2	name:4	age:4
================
第10秒
第11秒
时间: 2024-10-23 03:11:51

Esper epl语句实验的相关文章

Esper epl语句详解

EPL,Event Process Language,事件处理语言.类似于SQL,描述了esper要分析的内容. 统计窗口 以下为常用窗口. win:length(size)//攒够size条数据后触发UpdateListener()函数.滑动窗口,攒满之后新来一个移除一个,并触发. win:length_batch(size) //攒够size条数据后触发,并清空队列.再攒满了再触发. win:time(time period)//第一次触发在period秒后,然后每一秒触发一次. win:t

load data语句实验报告

1.创建和选择数据库 如果管理员在设置权限时为您创建数据库,则可以开始使用它.否则,您需要自己创建它: 创建数据库不会选择它来使用; 你必须明确地这样做.要创建menagerie当前数据库,请使用以下语句: 2.创建表 创建数据库很容易,但此时它是空的,SHOW TABLES告诉你: 使用CRATE TABLE语句指定表的布局: 创建表后,SHOW TABLES应该产生一些输出: 要验证您的表是否按预期方式创建,请使用以下DESCRIBE语句: 3.将数据加载到表中 假设宠物记录可以如此处所示:

实验二 格式化输入输出和分支语句

实验2 格式化输入输出和分支语句 实验目的 1. 掌握格式字符的使用方法,特别是%d, %f, %c, %s的基础用法,以及%lf和%ld使用注意事项 2. 掌握格式化输出函数printf()和格式化输入函数scanf()的用法 3. 掌握单个字符输出函数putchar()和单个字符输入函数getchar()的用法 4. 理解分支结构,掌握if语句和if...else语句的用法 5. 掌握switch语句的用法 实验内容 Part1: 格式化输出函数printf()和格式化输入函数scanf()

Esper学习之二:事件类型

Esper对事件有特殊的数据结构约定.能处理的事件结构有:POJO,java.util.Map,Object Array,XML 1.POJO 对于POJO,Esper要求对每一个私有属性要有getter方法.Esper允许不必按照JavaBean规定的格式,但是getter方法是必须的.又或者可以在配置文件中配置可访问的方法来代替getter.简单示例如下 [java] view plaincopy public class Person { String name; int age; pub

Esper系列(二)时间窗口、长度窗口、cast、注解、自定义函数、静态方法

长度窗口实现原理图 说明: 上图长度窗口为5,事件W1至W5进入引擎后属于NewEvents队列,事件W6进入引擎后,W2至W6就属于NewEvents队列,而事件W1就属于OldEvents队列了.NewEvents为先进先出队列,队列长度为EPL语句中制定的长度窗口大小,OldEvent队列为过期数据的存放队列. EPL长度窗口示例 1  select count(*) as result from orderEvent.win:time_batch(3 sec)   时间窗口实现原理图 说

5分钟开启Esper之旅

原作者:CoffeeOneSugar 翻译:刘斌华 在我之前发表的文章中,我提到我最近热衷于Complex Event Processing (CEP) (复杂事件处理).简单来说,CEP把数据流作为输入,根据一系列预定义的规则,把数据(或部分数据)重定向给监听者们:又或者是当发现数据中的隐含的模式(Pattern)时,触发事件.在大量数据被产生出来并需要进行实时地分析的场景下,CEP特别有用. 有一个很不错的软件项目,可以让你做到这一点,叫做ESPER.你可以在这里找到该项目的网站.Esper

程序员的量化交易之路(4)--Esper之事件(3)

欢迎转载学习,但转载须注明出处:http://blog.csdn.net/minimicall,尊重劳动成果,版权归我. 这一节中我们继续学习Esper的事件部分内容. 对应官方的文档为2.4-2.5 2.4 碎片及碎片类型(Fragment and Fragment Type) 有些情况,一个事件的某个属性本身又是一个事件.Esper对这种称作为fragment(碎片)和碎片类型.一个示例就是,两个或者更多的事件可以组成和一个新的事件作为输出,而这个输出事件在将来可能又作为其他事件的一个碎片属

程序员的量化交易之路(6)-Esper之处理模型(5)

3 处理模型(Processing Model) Esper的处理模型是持续的:更新监听器listener和订阅者subscriber,当事件到来时,根据声明对事件流.视图.过滤和输出等. 监听器的接口是com.espertech.esper.client.UpdateListener,必须实现update方法,这个函数会在结果到来时触发. 3.2 插入流(Insert Stream) 我们来看一个非常简单的EPL语句: Select * from Withdrawal 这条语句没有附加任何过滤

程序员的量化交易之路(3)--Esper事件Event(2)

第二章 EventPresentation 事件描述 欢迎转载学习,但转载须注明出处:http://blog.csdn.net/minimicall,尊重劳动成果,版权归我. 这一章用于说明事件描述和建模的方法. Esper 使用event type(事件类型)来描述事件的类型信息. 你的应用可以在Esper启动时或者在运行时通过API或者EPL语法来添加事件类型.具体参见16.4节"条目配置",关于启动时配置,15.3.8"运行时配置",关于运行时配置API. E