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

简介:

3 处理模型(Processing Model)

Esper的处理模型是持续的:更新监听器listener和订阅者subscriber,当事件到来时,根据声明对事件流、视图、过滤和输出等。

 

监听器的接口是com.espertech.esper.client.UpdateListener,必须实现update方法,这个函数会在结果到来时触发。

 

3.2 插入流(Insert Stream)

我们来看一个非常简单的EPL语句:

 

Select * from Withdrawal

 

这条语句没有附加任何过滤、视图等条件。这条语句会当Withdrawal或者其子类对象到来时触发。

下面是是一个例子。


图3.1 Output example for a simple statement

 

上面这个简单的例子中只有new events被提交到语句的监听器中,oldevents没有。

 

3.3 插入和删除流

一个长度窗口是让引擎只保留最近的N个事件。下面的语句给Withdrawal事件流一个长度窗口。这条语句用于说明数据窗口,一个事件有进就有出的数据窗口。

 

select * from Withdrawal.win:length(5)

 

下面这幅图就是数据窗口的一个例子:


它保有5个时间,所以当窗口满了后,最先的w1事件就会被删除,做old events送给监听器。

和长度窗口类似的还有事件窗口。

 

3.4 过滤和where语句

过滤器会过滤掉那些不符合条件的事件,这些事件就不会被投递到语句的监听器中。例如:

 

select * fromWithdrawal(amount>=200).win:length(5)

 

任何amount值小于200的Withdrawal对象都不会被投到监听器的回调函数里面。下图是说明。


上述图可以看到,事件还没有进入到窗口就被过滤了。

Where和having语句则不一样,它是在事件进入到窗口之后再过滤。

 

select * from Withdrawal.win:length(5)where amount >= 200

 

3.5 时间窗口(Time Window)

这一节我们说明时间窗口以及时间批处理窗口

3.5.1 时间窗口

时间窗口就是保留特定事件间隔内的事件。

下面是一个示例:

 

select account, avg(amount)

from Withdrawal.win:time(4 sec)

group by account

having amount > 1000

 

下面是一个更为简单的例子:

 

select * from Withdrawal.win:time(4 sec)

 

下面图示是解释其原理:


 

3.5.2 Time Batch 事件批处理

就是每隔设定的时间才会去触发一次监听器。

 

例如如下语句:

 

select * from Withdrawal.win:time_batch(4sec)

 

其运行原理如图:


 

 

相关文章
|
4月前
|
存储 人工智能 搜索推荐
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛C题的解决方案,包括爬取泰迪内推平台的招聘与求职信息、构建企业和求职者画像、开发岗位匹配度与求职者满意度模型以及设计招聘求职双向推荐模型的步骤和Python代码实现。
66 2
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一
|
4月前
|
机器学习/深度学习 人工智能 算法
【悬念揭秘】ML.NET:那片未被探索的机器学习宝藏,如何让普通开发者一夜变身AI高手?——从零开始,揭秘构建智能应用的神秘旅程!
【8月更文挑战第28天】ML.NET 是微软推出的一款开源机器学习框架,专为希望在本地应用中嵌入智能功能的 .NET 开发者设计。无需深厚的数据科学背景,即可实现预测分析、推荐系统和图像识别等功能。它支持多种数据源,提供丰富的预处理工具和多样化的机器学习算法,简化了数据处理和模型训练流程。
57 1
|
4月前
|
SQL IDE JavaScript
"揭秘高效代码Review秘籍:如何像侦探一样挖掘隐藏错误,提升团队编程实力,你不可错过的实战指南!"
【8月更文挑战第20天】代码Review是软件开发中提升代码质量与团队协作的关键环节。本文详细介绍高效代码Review流程:从明确范围与标准开始,到逐行审查与工具辅助,再到积极沟通与闭环管理,辅以示例确保清晰易懂。通过实践这些步骤,不仅能减少错误,还能促进知识共享,为构建高质量软件打下坚实基础。
73 2
|
4月前
|
机器学习/深度学习 搜索推荐 数据可视化
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题二
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛C题的解决方案,重点讲解了如何构建招聘与求职双向推荐系统的建模过程和Python代码实现,并对招聘信息和求职者信息进行了详细分析和画像构建。
81 1
|
机器学习/深度学习 人工智能 自然语言处理
科普神文,一次性讲透AI大模型的核心概念
令牌,向量,嵌入,注意力,这些AI大模型名词是否一直让你感觉熟悉又陌生,如果答案肯定的话,那么朋友,今天这篇科普神文不容错过。我将结合大量示例及可视化的图形手段,为你由浅入深一次性讲透AI大模型的核心概念。本文转载至:https://baijiahao.baidu.com/s?id=1779925030313909037&wfr=spider&for=pc。确实是一篇很不错的文,很好的解释了大模型底层的一些基本概念,对于我这种AI新手非常友好哈哈哈
科普神文,一次性讲透AI大模型的核心概念
|
7月前
|
机器学习/深度学习 存储 人工智能
极智AI | 谈谈模型量化组织方式
本文主要聊一下深度学习模型量化组织方式。
308 0
|
机器学习/深度学习 Oracle 关系型数据库
模块化的机器学习系统就够了吗?Bengio师生告诉你答案
模块化的机器学习系统就够了吗?Bengio师生告诉你答案
145 0
|
机器学习/深度学习 人工智能 运维
感知类模型构建及应用-AI 架构师成长计划(三)|学习笔记
快速学习感知类模型构建及应用-AI 架构师成长计划(三)。
216 0
感知类模型构建及应用-AI 架构师成长计划(三)|学习笔记
|
监控 数据可视化 测试技术
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
278 0
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
|
编译器 C语言 C++
高效学习C++基础部分&话题挑战赛
高效学习C++基础部分&话题挑战赛
148 0
高效学习C++基础部分&话题挑战赛