我在下面定义了输入流。Datetime 字符串是 like 2010-09-01 06:59:00.000
,结果是 double like 157,382
,而 UnixDateTime 的类型是 long like 1283324340111
。
define stream HStream(ID int, DateTime String, Result double, UnixDateTime long);
我想为显示result
列平均值的 100 个事件制作长度批次,并且我想将这些批次相互比较。我想对接下来的 5 个批次(每个批次都包含 100 个事件)进行滑动比较。所以我想比较第一批(0-100 事件)和第二批(101-200),直到第六批(501-600)。我希望第二批比较到第七批。我想通过比较实现的是,当 4 个或更多(来自 5 个)批次的批次平均结果全部大于或全部小于 1(与原始批次的平均结果相比)时,我想记录有关原始批次的信息。
我的代码如下。问题我不知道确切的语法。我查看了 WSO2 和 Siddhi 的教程和文档,但我无法解决问题。
@info(name = 'MovingAverageQuery')
from every e1=HStream, e2=HStream[e1.avg(Result) <= avg(Result))+, e2=HStream[e2[last].avg(Result) <= avg(Result)]
select ID, DateTime, Result,
avg(Result), UnixDateTime
output last every 100 events
insert into OutputStream;
@sink(type='log', prefix='LOGGER')
define stream OutputStream(Nr ID, DateTime String, Result double, Avg double, UnixDateTime long);