我们尝试实现每小时计数事件的时间序列。 我们希望在CEP中每小时计数并将输出存储在数据存储区/ nosql中。缺少的是我们想存储的是给定日期内每小时的计数。
为此,我们需要在每次timebatch窗口到期时从CEP输出当前时间戳。
有人可以解释如何使用WSO2 CEP来实现这个目标吗?
由于 RP
答案 0 :(得分:0)
我认为您应该使用BAM而不是CEP,因为您尝试做的事情看起来更像是map-reduce工作。
你看过了吗?
答案 1 :(得分:0)
希望您使用的是WSO2 CEP 3.1.0。目前正在开发WSO2 CEP 4.0.0,一旦发布了WSO2 CEP,就会有一个RDBMS发布者(输出适配器),您可以在其中指定连接并直接发布输出流值。
您可以拥有一个带有siddhi查询的执行计划来实现时间戳逻辑。要了解有关siddhi查询语言的更多信息,请参阅WSO2 Siddhi文档。enter link description here
以下是一个示例执行计划,其中包含siddhi查询,用于在给定时间窗口(1分钟)内检查室温值,并将写入平均温度以及房间号写入输出流。如果要将它们存储在数据库中,可以使用RDBMS发布者(输出适配器)作为输出流。
/* Enter a unique ExecutionPlan */
@Plan:name('testPlan')
/* Enter a unique description for ExecutionPlan */
-- @Plan:description('ExecutionPlan')
/* define streams and write query here ... */
@Import('inStream:1.0.0')
define stream inStream (temperature double, roomNumber int);
@Export('outStream:1.0.0')
define stream outStream (temperature double, roomNumber int);
from inStream#window.time(1 min)
select avg(temperature) as temperature,roomNumber
group by roomNumber
having temperature>= 70
insert into outStream;
答案 2 :(得分:0)
您可以在选择中使用time:currentTime()
扩展名来获取Siddhi 3.0 / WSO2CEP 4.0的时间窗口到期时间。有关示例,请查看this test case。