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分组,取分 ...
随机推荐
- clearfix的用法(转)
clearfix的用法 (2013-12-31 10:41:24) 标签: clearfix 清除浮动 clearboth height zoom 分类: 网页制作 如果有一个DIV作为外部容器,内部 ...
- Codeforces Good Bye 2018 D (1091D) New Year and the Permutation Concatenation
题意:给n!个n的排列,按字典序从小到大连成一条序列,例如3的情况为:[1,2,3, 1,3,2, 2,1,3 ,2,3,1 ,3,1,2 ,3,2,1],问其中长度为n,且和为sum=n*(n+1) ...
- SimpleDateFormat-多线程问题
SimpleDateFormat-多线程问题: SimpleDateFormat类在多线程环境下中处理日期,极易出现日期转换错误的情况 import java.text.ParseException; ...
- cakephp的优点
1.接口传参非常简单,直接域名/控制器名/方法名/param1/param2
- etl 获取列数据类型
QueryInfo info = new QueryInfo(); info.CustomSQL = @" select column_name, data_type, data_preci ...
- java Iterator类
查看java源码. /* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE ...
- java Linkedhashmap源码分析
LinkedHashMap类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是插入次序,或者是最近最少使用(LRU)的次序.只比HashMap慢一点:而在迭代访问时反而更快,因为它使用链表维 ...
- 在robotframework里面,怎么在已有的字典中加一个键值对呢
- java 获取url及url参数解析
java 获取url及url参数解析 一.url编码:URLEncoder.encode(userName); 二.url解码: URLDecoder.decode(userName);
- c# 大文件分割 复制 Filestream 进度条
大文件分割复制,每次复制100M 也可以复制别的较大数值. 小于1G的小文件就直接复制得了.代码里没写 ,但是很简单 直接写进去就好了,难得是分割复制 所以没写. 好吧 我还是改了 改成小文件也可以复 ...