Cumulocity / Esper:每天/每周/每月汇总全天/周/月的测量值

时间:2016-07-06 09:17:45

标签: esper cumulocity

我想帮助在Esper中模拟我的问题:

我每天多次创建测量值。在每天结束时,我想汇总此类型的所有测量值,按当天创建的源进行分组并计算和求和并重新注入新的测量。我会在本周末和月底也这样做。

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

感谢您的见解。

1 个答案:

答案 0 :(得分: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,最后,,59)

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

我尝试在1天之后做一些事情,但这似乎不起作用,因为那时每隔一天都有一个上下文。这就是为什么我提前1秒结束了上下文。