我想一些帮助来模型化在艾斯波我的问题一个月的测量:Cumulocity /艾斯波:聚合所有天/周/每天/每周/每月
创建测量在一天内多次,在结束每天,我想汇总所有这种类型的测量数据,按当天创建的数据源进行分组,然后进行计数和求和,然后重新注入新的测量数据。我会在本周结束时和本月底做同样的事情。
问题是我不知道如何将cron表达式(例如每天午夜说),时间窗口(说我想要过去一天的所有事件)和事件流(to选择我想要的类型的测量值)。
感谢您的洞察力。我认为
我想一些帮助来模型化在艾斯波我的问题一个月的测量:Cumulocity /艾斯波:聚合所有天/周/每天/每周/每月
创建测量在一天内多次,在结束每天,我想汇总所有这种类型的测量数据,按当天创建的数据源进行分组,然后进行计数和求和,然后重新注入新的测量数据。我会在本周结束时和本月底做同样的事情。
问题是我不知道如何将cron表达式(例如每天午夜说),时间窗口(说我想要过去一天的所有事件)和事件流(to选择我想要的类型的测量值)。
感谢您的洞察力。我认为
最好的方法是定义一个上下文这样的持续时间:
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秒前结束了上下文。
您好TyrManuZ,再次感谢您的回答。我想到了这一点,这个想法唯一的问题是,在重启服务器的情况下,上下文中的所有数据都将丢失,并且由于我的上下文很长(一个月),我认为它发生的风险可能太高。 –
Cumulocity即将支持esperha,它将在服务器重新启动后恢复此类语句的状态。这将解决问题。 – TyrManuZ
只有其他选项是在'pattern [每个定时器:在(0,0,*,*,*,0)]上触发'并使用函数从数据库查询整个数据,然后计算值 – TyrManuZ