2017-12-10 12 views
1

Siddhi에서 지정된 기간 동안 이벤트 조건이 충족되는지 확인하는 쿼리를 작성하려고했습니다. , 내가 사용하는 5 분Siddhi : 일괄 처리 창에서 지정된 기간 동안 조건을 만족하는 이벤트를 확인하는 방법

의 배치 시간 쿼리를 사용하여 출력 스트림에 밀어 시간의 지정된 기간 동안 20보다 항상 커야 온도를 필요 온도 이벤트 스트림 : 다음은 요구 사항입니다 했다 : 위 쿼리에서 이벤트 스트림

sensorStream=[tempID1,190.8] 
delay(500) 
sensorStream=[tempID1,100] 
delay(500) 
sensorStream=[tempID1,38.8] 
delay(200) 
sensorStream=[tempID1,15.8] 
delay(100) 
sensorStream=[tempID1,45.8] 
delay(700) 
sensorStream=[tempID1,8.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 
sensorStream=[tempID1,34.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 

sensorStream=[tempID1,18.8] 
delay(500) 
sensorStream=[tempID1,18.8] 
delay(500) 

내가 timebatch 1 초 동안 특정 tagId의 수를 가져온 다음 테이블에 저장을 위해

@Plan:name('TestExecutionPlan') 

@PrimaryKey('sensorId') 
define table stable1 (sensorId string, temperature float,count long); 
define table stable2 (sensorId string, temperature float,count long); 
define stream sensorStream (sensorId string, temperature float); 

from sensorStream[sensorId=="tempID1"]#window.timeBatch (1 sec) 
select timestamp() as messageID,sensorId ,temperature,count() as count 
insert into test1; 

@info(name = 'query1') 
from sensorStream[sensorId=="tempID1"]#window.timeBatch (1 sec) 
select sensorId ,temperature,count() as count 
insert into stable1; 

from sensorStream[sensorId=="tempID1" and temperature>20 ]#window.timeBatch (1 sec) 
select timestamp() as messageID, sensorId as sensorId, temperature as temperature, count() as count 
insert into test2; 



from stable1 join test2 on test2.count==stable1.count 
select test2.sensorId ,test2.temperature,test2.count 
insert into finalStream; 

stable1. 또한 시간 배치 1 초 동안 조건 (> 20)으로 특정 tagId에 대한 개수를 가져옵니다. 그런 다음 두 항목 모두에 조인을 적용하여 일치하는지 확인합니다. 그래서 여기의 이슈는 내가이 둘을 합칠 수있는 이드가 없기 때문에 합류가 적절하게 일어나지 않는다.

출력 할 타임 스탬프를 추가하는 방법에 대한 안내를받을 수 있습니다. 동일한 작업에 쉽게 참여할 수 있도록 알려줍니다.

+0

Siddhi 락 확장이에 포함 할 필요가 있는가 – babravahan

답변

0

내가 사용해야 순서을이

문제를 해결 쿼리는 다음과 같습니다

@info(name = 'query2') 
from e1=sensorStream[sensorId=="tempID1" and temperature>20],e2=out1[sensorId=="tempID1" and temperature>20] within 1 sec 
select e1.sensorId,e1.temperature 
insert into outstream;