WSO2CEP:在siddhi查询中从流中获取以前的事件值



我一直使用以下siddhi query来获得每分钟的事件计数;t作为时间戳(字符串),ftp_requests作为计数(int)。

from FTPInStream[command == 'USER']
select time:timestampInMilliseconds(time:dateAdd(str:replaceAll(ts,'T',' '), 5, 'hour',"yyyy-MM-dd HH:mm:ss"),'yyyy-MM-dd HH:mm') as milliseconds , uid, id_orig_h, id_orig_p, id_resp_h, id_resp_p
insert into intermediateStream;
from intermediateStream#window.externalTimeBatch( milliseconds ,1 min, milliseconds, 1 min)
select time:dateFormat(milliseconds, 'yyyy-MM-dd HH:mm' ) as ts , cast(count(milliseconds), 'int') as ftp_requests
group by milliseconds
insert into FTPOutStream;

如果我想在每个新值中添加ftp_requests的前一个值,以获得每个新请求的累计请求数,需要进行哪些更改?在siddhi中是否有任何功能可以从已经发布的流中获取以前的事件值?

您不应该使用group by milliseconds, count()不应该需要任何参数,也不需要将其强制转换为int。试试下面的查询。

from FTPInStream[command == 'USER']
select time:timestampInMilliseconds(time:dateAdd(str:replaceAll(ts,'T',' '), 5, 'hour',"yyyy-MM-dd HH:mm:ss"),'yyyy-MM-dd HH:mm') as milliseconds , uid, id_orig_h, id_orig_p, id_resp_h, id_resp_p
insert into intermediateStream;
from intermediateStream#window.externalTimeBatch( milliseconds ,1 min, milliseconds, 1 min)
select time:dateFormat(milliseconds, 'yyyy-MM-dd HH:mm:ss' ) as ts , count() as ftp_requests
insert into FTPOutStream;

最新更新