0

我需要一些帮助来模拟我在 Esper 中的问题:

我每天多次创建测量值,在每天结束时,我想汇总所有这种类型的测量值,按当天创建的源分组,并进行计数和总和,然后将其重新注入新的测量值。我会在周末和月底做同样的事情。

问题是我不知道如何组合一个 cron 表达式(比如每天午夜)、一个时间窗口(比如我想要过去一天的所有事件)和一个事件流(选择我想要的类型)。

感谢您的洞察力。

4

1 回答 1

0

我认为最好的方法是为这样的持续时间定义一个上下文:

create context DailyMeasurementAggregation
  context DailySourcePartition 
    partition by measurement.source.value from MeasurementCreated,
  context DailyTimerPartition 
    start (0,0,*,*,*,0) 
    end (59,23,*,*,*,59);


context DailyMeasurementAggregation
select
  count(m) as count,
  sum(getNumber(m, "myMeasurement.M.value")) as sum
from MeasurementCreated m
where getObject(m, "myMeasurement.M") is not null
output last when terminated;

其他范围的 cron 语法如下: 每周:开始 (0,0, , ,0,0) 结束 (59,23, , ,6,59) 每月:开始 (0,0,1, , , 0) 结束 (59,23,last, , ,59)

每周是周日到周六,所以也许你需要调整数字。这是 esper 文档中关于 cron 语法的部分:http: //www.espertech.com/esper/release-5.2.0/esper-reference/html/event_patterns.html#pattern-timer-at

我试图在 1 天后做类似结束的事情,但这似乎不起作用,因为每隔一天才有一个上下文。这就是我提前 1 秒结束上下文的原因。

于 2016-07-06T10:26:05.557 回答