esper - Esper - 将多行中的值连接到列表
问题描述
我有一个返回多行的 Esper 查询,但我想获得一行,其中该行有一个列表(或连接字符串),其中包含我当前匹配的行(的对应列)中的所有值查询返回。
例如:
SELECT Name, avg(latency) as avgLatency
FROM MyStream.win:time(5 min)
GROUP BY Name
HAVING avgLatency / 1000 > 60
OUTPUT last every 5 min
回报:
Name avgLatency
---- ----------
A 65
B 70
C 75
我真正想要的是:
Name
----
{A, B, C}
这可以通过查询本身来完成吗?我尝试使用子查询来完成这项工作,但我没有使用多个流。我在 Esper 文档中也找不到任何符合我想要做的事情的聚合函数或枚举函数。
感谢任何对我有任何见解或方向的人。
编辑:如果这不能通过查询来完成,我愿意改变订阅者,或者如果需要的话。
解决方案
您可以让订阅者或侦听器执行 concat。订户有“多行交付”。或使用如下表。
// create table to hold aggregation result
create table LatencyTable(name string primary key, avgLatency avg(double));
// update aggregations in table from events coming in
into LatencyTable select name, avg(latency) as avgLatency from MyStream#time(5 min) group by name;
// do a select with the "aggregate" enumeration method
select (select * from LatencyTable where avgLatency > x).aggregate(....) from pattern[every timer:interval(5 min)]
推荐阅读
- html - 拒绝在框架中显示“https://abcd.ac.in/”,因为它将“X-Frame-Options”设置为“sameorigin”
- mysql - 防止 Nodejs MySQL SQL 注入
- php - 某行代码的变量值怎么会变成假?
- javascript - 执行javascript时jQuery代码不执行代码?
- django - Django:在运行时指定动态数据库
- javascript - HTML 使视图水平滚动
- vba - IE对话框打开另存为-Findwindowex api命令vba
- sql - SQL COUNT 忽略列
- api - UCWA - 让所有会议不仅仅是你安排的会议
- sonarqube - Sonarqube:为多模块导入 Jacoco xml 报告