Context

把不同的事件按照框的规则框起来(规则框在partition by中定义),并且有可能有多个框,而框与框之间不会互相影响。

功能:

组合事件查询并进行分组,类型:Hash Context、Category Context、Non-Overlapping Context。

 

格式:

create context context_name partition [by] event_property [and event_property [and ...]] 
from stream_def [, event_property [...] 
from stream_def] [, ...] 

 

例子:

// 创建context
create context ctEvent partition by name from orderEvetn;
 
// 统计最近两秒内各context区间中事件salary值的总和
String epsql = "context ctEvent select sum(salary) as result from orderEvent.win:time(2 sec)";

 

// 当context各区间中存在事件个数非0且为2的整数倍时,统计该区间事件属性最近两个事件salary属性的总和,这里2由win:length_batch(2)指定;
String epsql = "context ctEvent select sum(salary) as result from orderEvent.win:length_batch(2)";
 

说明:

win:length_batch(num):该标识限定事件个数必须非0且为num的整数倍时就触发监听,并对最近num个事件进行对应的处理。

win:length(num):该标识作用于最近的num个事件,没有达到num个数监听也会被触发。

win:length(num)与win:length_batch(num)相比后者相当于在前者的基础上增加了一个批处理设置,num个数达到后才进行处理。

win:time(time):该标识处理最近的time时间内的事件。

win:time_batch(time):该标识符与win:length_batch(num)类似不过这里是时间。

 

作用:

根据定义context中指定的属性对事件流中属性值进行分类,结合EPL语句运行时将针对分类的结果进行分析运算。

多个事件流的context, 每个流的中用于context的属性的数量要一样,数据类型也要一致。

Context各属性字段描述表

Name:Context名称;

ID:引擎自动为context分配从0开始依次递增,context作用的事件流,同一属性类型的事件流ID值相同;

Key1~keyN:分别对应context作用于事件流的各个属性字段;

Group by

格式:

group by aggregate_free_expression [, aggregate_free_expression] [, ...];

注意:group by后面不能包含聚合函数,也不能是select子句中聚合函数修饰的属性名;

功能:

group by的对象就是一个值(属性字段也是值),以相同的值进行分组;

使用Group by的时候,会遇到分组数量太多的情况。比如以时间单位进行分组,那么内存使用一定是一个大问题。因此@Hint为其设计了两个属性,用于限制Group by的生存时间,使虚拟机能及时回收内存。这两个属性分别为reclaim_group_aged和reclaim_group_freq;

 

// 以name进行分组,对最近3 秒内的事件取salary属性的平均值,@Hint('reclaim_group_aged=1')表示在1秒内对没有更新数据的分组进行回收, reclaim_group_aged后面值的单位是秒;
String epsql = "@Hint('reclaim_group_aged=1')select avg(salary) as result from orderEvent.win:time(3 sec) group by name";

 

// 以name进行分组,对最近3 秒内的事件取salary属性的平均值,@Hint('reclaim_group_aged=2,reclaim_group_freq=1')表示对两秒内对没有更新数据的分组进行回收,每1秒查探回收一次(防止数据量大的时候内存溢出)
String epsql = "@Hint('reclaim_group_aged=2,reclaim_group_freq=1')select avg(salary) as result from orderEvent.win:time(3) group by name";

 

Having

与SQL作用类似,where子句中不能包含聚合函数,而Having的作用就是针对这种应用的处理。

Esper系列(三)Context和Group by的更多相关文章

  1. ldap配置系列三:grafana集成ldap

    ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...

  2. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  3. MySQL并发复制系列三:MySQL和MariaDB实现对比

    http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...

  4. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  5. linux磁盘管理系列三:LVM的使用

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

  6. 使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization)

    使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization) 前言: 这是 qt for python 的语言国际化,基于 UI 的,python 也有 ...

  7. 很有用的PHP笔试题系列三

    1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2. SESSION 与 COOKIE的区别是什么,请从 ...

  8. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  9. Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

随机推荐

  1. PythonCrawl自学日志

    2016-09-10 PythonCrawl自学日志 1.python及Selenium的安装 (1)开发环境使用的是VS2015 Community.python3.5.Selenium3.0BET ...

  2. 【Hades】ades是一个开源库,基于JPA和Spring构建,通过减少开发工作量显著的改进了数据访问层的实现

    几乎每个应用系统都需要通过访问数据来完成工作.要想使用领域设计方法,你就需要为实体类定义和构建资源库来实现领域对象的持久化.目前开发人员经常使用JPA来实现持久化库.JPA让持久化变得非常容易,但是仍 ...

  3. js: get event handler bound to the element

    jQuery._data(jQuery(this)[0], "events" ).click[0].handler $._data( $("#myabc")[0 ...

  4. Python属性、方法和类管理系列之----元类

    元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, c ...

  5. sjtu1591 Count On Tree

    Description Crystal家有一棵树.树上有\(n\)个节点,编号由\(1\)到\(n\)(\(1\)号点是这棵树的根),两点之间距离为1当且仅当它们直接相连.每个点都有各自的权值,第\( ...

  6. 解决win8找不到没有AppData文件夹

    现象:今天打开win8,由于是从xp直接过渡到win8,所以想寻找类似于AppData的文件夹.但是在user/用户名/下面木有. 解决:这是个隐藏文件,和xp一样,取消隐藏文件夹即可看到. 然后就可 ...

  7. POJ2225+BFS

    简单的BFS   1a /* 从起点到终点 */ #include<stdio.h> #include<string.h> #include<stdlib.h> # ...

  8. XML和JSON 序列化以及DataTable转JSON

    using System.IO; using System.Text; using System.Xml.Serialization; using System.Xml; using System.R ...

  9. Android 编译大全

    http://quanminchaoren.iteye.com/blog/840917

  10. Linq中的常用方法

    System.Linq System.Linq.Enumerable  类 Range Repeat Reverse Select Where Sum Zip Aggregate Count Firs ...