2016-08-23 5 views
0

분당 이벤트 수를 얻기 위해 siddhi query 다음을 사용했습니다. ts는 timestamp (문자열)이고 ftp_requests는 count (int)입니다. WSO2CEP : siddhi 쿼리에서 이전 이벤트 값 가져 오기

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에 이미 게시 된 스트림에서 이전 이벤트 값을 가져 오는 함수가 있습니까?

답변

0

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; 
관련 문제