我有一个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文档中找不到适合我尝试执行的任何聚合函数或枚举函数。
感谢在这里对我有任何见识或指导的任何人。
编辑: 如果无法通过查询完成此操作,则我愿意更改订阅者,或者如有必要,可以进行其他任何更改。
答案 0 :(得分:0)
您可以让订阅者或监听者进行连续播放。订户有一个“多行传递”。或使用如下表格。
// 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)]