3

我有一个非实时的 Esper 配置,我在其中提供从文件中读取的流。我正在尝试创建一个表达式来计算整个流的统计数据并在最后输出一个值。例如,Esper 具有强制视图每 X 秒输出一次的语义,但是当您知道没有更多事件要提供时,是否有一种语义可以要求视图或引擎“刷新”输出。

4

2 回答 2

8

事实证明,至少有一种方法是使用带有变量触发器的输出子句。

表达式将是:

select count(*) as totalCount from events output last when OutputSummary = true

OutputSummary 变量将像这样初始化:

epConfiguration.addVariable("OutputSummary", Boolean.class, "false");

当您准备好刷新时,将变量设置为 true,如下所示:

epRuntime.setVariableValue("OutputSummary", true);
long currentTime = epService.getEPRuntime().getCurrentTime();
epRuntime.sendEvent(new CurrentTimeEvent(currentTime));

有必要发送另一个时间事件来强制表达式进行评估。

于 2010-01-27T01:00:33.393 回答
0

当每 60 秒需要输出时,表达式为:

select emplyee_id from employees output snapshot every 60 sec

当输出需要每 10000 个事件时,表达式将是:

select emplyee_id from employees output snapshot every 10000 events
于 2015-03-30T06:42:46.610 回答