esper(3)-窗口&聚合分组
一、Insert and Remove Stream
1、
select * from com.ebc.updatelistener.User
只输出newEvents,不会输出oldEvents。即使加上isstream,也不会。

2、
select irstream * from com.ebc.updatelistener.User.win:length(5)
当达到第6个时,第1个会成为oldEvents。如果去掉irstream,则不会产生oldEvents。

二、Filter and Where-Clause
Filter:
select * from com.ebc.filterwhere.User(amount>=200).win:length(5)

where:
select * from com.ebc.filterwhere.User.win:length(5) where amount>=200

filter: 只有符合条件的event才进入view和触发updateListener。
where:所有event都会进入view,只有符合条件的event才触发updateListener。
三、聚合与分组
1、sum
//统计进入的5个event的总额
select sum(amount) from com.ebc.aggGroup.User.win:length_batch(5) --UpdateListener
Integer sumV = (Integer) (newEvents[0].get("sum(amount)"));
2、groupby
初始数据
--view
class User implements Serializable {
private String name;
private int age;
private int amount;
}
--事件
runtime.sendEvent(new User("遥远1",1,1));
runtime.sendEvent(new User("遥远2",2,2));
runtime.sendEvent(new User("遥远1",3,3));
runtime.sendEvent(new User("遥远2",4,4));
runtime.sendEvent(new User("遥远1",5,5));
runtime.sendEvent(new User("遥远6",6,6));
情况1:
--epl
select name,sum(amount) from com.ebc.aggGroup.User.win:length_batch(5) group by name
--输出
name=遥远2,sumV=6
name=遥远1,sumV=9
情况2:
--epl
select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name
--输出
name=遥远1,sumV=9,age=1
name=遥远2,sumV=6,age=2
name=遥远1,sumV=9,age=3
name=遥远2,sumV=6,age=4
name=遥远1,sumV=9,age=5
情况3:
--epl
select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name,age
--输出
name=遥远1,sumV=1,age=1
name=遥远2,sumV=2,age=2
name=遥远1,sumV=3,age=3
name=遥远1,sumV=5,age=5
name=遥远2,sumV=4,age=4
如果情况3的epl不变,修改发送数据,即红色部分
runtime.sendEvent(new User("遥远1",1,1));
runtime.sendEvent(new User("遥远2",2,2));
runtime.sendEvent(new User("遥远1",,3));
runtime.sendEvent(new User("遥远2",4,4));
runtime.sendEvent(new User("遥远1",,5));
runtime.sendEvent(new User("遥远6",6,6));
则输出
name=遥远1,sumV=9,age=1
name=遥远2,sumV=2,age=2
name=遥远2,sumV=4,age=4
group by总结
--只对name分组来sum,age不参与
select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name --对name、age分组来sum
select name,sum(amount),age from com.ebc.aggGroup.User.win:length_batch(5) group by name,age
esper(3)-窗口&聚合分组的更多相关文章
- PB gird类型数据窗口 设置分组、分组小计、合计
今天遇到一个需求,gird表格数据如下: 部门 类型 数据 A 类型1 1 A 类型2 2 B 类型1 3 B 类型2 4 合计 10 实际需要显示的结果为: 部门 ...
- 【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物
原文:[高德地图API]从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物 摘要:覆盖物,是一张地图的灵魂.有覆盖物的地图,才是完整的地图.在 ...
- Django之ORM操作(聚合 分组、F Q)
Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作. 键的名 ...
- day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁
一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...
- Django day08 多表操作 (五) 聚合,分组查询 和 F,Q查询
一:聚合,分组查询 二:F, Q查询
- MySql 筛选条件、聚合分组、连接查询
筛选条件 比较运算符 等于: = ( 注意!不是 == ) 不等于: != 或 <> 大于: > 大于等于: >= 小于: < 小于等于: <= IS NULL I ...
- 数据聚合 & 分组:新一代系统监控的核心功能
遥想 2015 年 8 月 17 日,Cloud Insight 还在梳理功能原型,畅想 Cloud Insight 存在的意义:为什么阿里云用户需要使用 Cloud Insight 来加强管理. 而 ...
- SQL你必须知道的-查询聚合分组排序
use MySchoolTwo -- 简单查询 select * from Student -- 话说这种查询的效率要比 * 要高级点 select sId , sName , ...
- MongoDB 聚合分组取第一条记录的案例及实现
关键字:MongoDB: aggregate:forEach 今天开发同学向我们提了一个紧急的需求,从集合mt_resources_access_log中,根据字段refererDomain分组,取分 ...
随机推荐
- set源码之心得
C++的STL很强大,强大到我只愿慵懒地去使用而不知其所以然.直到李师问我,我的回答被李师否定,我方才意识到自己是多么地浅陋.希望自己有空抽时间把STL源码给研究一下,化为自己真正可以掌控的力量. s ...
- POJ 1741 点分治
方法:指针扫描数组 每次选择树的重心作为树根,从树根出发进行一次DFS,求出点到树根的距离,把节点按照与树根的的距离放进数组d,设置两个指针L,R分别从前.后开始扫描,每次满足条件时答案累加R-L., ...
- oracle 监听服务OracleOraDb11g_home1TNSListener打开后立马停止错误
首先我真得吐槽一下,我安装这个破软件感觉真的是把能遇到的错误都遇到一遍了,生气!!!!!!! 关于监听服务OracleOraDb11g_home1TNSListener打开后立马停止这个错误,我的解决 ...
- can通信实验
源码讲解 1.硬件连接 需要两个开发板 2.初始化函数讲解 针对F103的 3.发送函数讲解 4.接收函数讲解 5.main函数讲解
- Hibernate 处理查询 in 字句
from : http://blog.csdn.net/wodestudy/article/details/38200421 在处理hibernate的实体查询,一般可以采用多种方式处理复杂的查询,比 ...
- Spring第五篇
在Spring第四篇中 我们主要介绍了set get的注入方式 在Spring第五篇中 我们主要介绍使用注解配置Spring 主要分为两个步骤 1 导包的同时引入新得约束 导包如下 1.1 重写注解代 ...
- [译]javascript中定义函数的各种方法
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- 利用python传送文件
转:微信公众号李云景(侵删) 很多人传送文件都是使用QQ,微信,百度云,或者其他网盘. 不过都有微信的传输文件有大小的限制,百度云就不说了,想要正常的下载速度反而要充VIP. 我一直推崇大家都学习Py ...
- c++ 委托构造函数
#include<iostream> ; using namespace std; class Cbox{ int a ; int b ; int c ; public: int g ; ...
- Kotlin 数据类型(字符类型)
Kotlin有两种常见的字符类型. 第一种是String,第二种char. String String 的类型的赋值必须是用双引号的. 格式: var name="Arm830" ...