Esper-将多行中的值连接到列表

时间:2018-10-03 08:46:38

标签: esper nesper

我有一个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文档中找不到适合我尝试执行的任何聚合函数或枚举函数。

感谢在这里对我有任何见识或指导的任何人。

编辑: 如果无法通过查询完成此操作,则我愿意更改订阅者,或者如有必要,可以进行其他任何更改。

1 个答案:

答案 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)]