2017-11-15 17 views
0

여러 센서가 측정 이벤트를 스트림으로 보냅니다. 이벤트는 {매개 변수, 값, 시간 소인}으로 구성됩니다. 며칠 동안이 값을 관찰하고 추세를 확인하고 이러한 여러 센서로 모니터링되는 장비에 대한 진단을하고 싶습니다.wso2 cep Siddhiql

  1. 스트림을 매개 변수로 나눕니다.
 
    from inputStream[parameter='A'] 
    select * 
    insert into Astream; 

등 각 매개 변수에 대해 수신된다.

  1. 타임 윈도우의 경우, 예를 들어 60 초 동안 선형 회귀를 계산하여 변경 사항을 찾습니다.
 
    from Astream#timeseries:lengthTimeRegress(60000, value, timestamp) 
    select beta1 * 100 as AChange 
    insert into AChangeStream; 

이 나는 ​​각 메트릭 스트림 않습니다. 3. 각 스트림에 대한 추세가 생기면 각 스트림에 대해 변경된 값을 수집하고 조건을 충족하는지 확인합니다.

 
    from every e1=AChangeStream[e1.AChangeStream > 0.5], e2=BChangeStream[e2.BChangeStream 0.15] 
    select 'condition 1 alarm' as message 
    insert into alertStream; 

위의 siddhi ql은 시간 창에서 6 개 매개 변수의 변경을 감지합니까?

답변

1

누락 된 사소한 것들을 제외하고 제공 한 쿼리의 요지는 정확합니다. 6 개의 매개 변수를 말할 때 매개 변수 A, B, C, D, E 및 F와 비슷한 것을 가지고 있다고 생각합니다. 결국 주어진 조건과 일치하는 일련의 이벤트를 찾고 싶을 것 같습니다 [1].

매개 변수 A와 B를 2 개만 고려하면 다음과 같이 Siddhi 언어로 쿼리를 작성하여 요구 사항을 충족시킬 수 있습니다.

 

@Import('input:1.0.0') 
define stream inputStream (parameter string, value double, timestamp long);  


from inputStream[parameter=='A'] 
select * 
insert into Astream;  

from inputStream[parameter=='B'] 
select * 
insert into Bstream;  

from Astream#timeseries:lengthTimeRegress(60000, 10000, value, timestamp) 
select beta1*100 as AChange 
insert into AChangeStream;  

from Bstream#timeseries:lengthTimeRegress(60000, 10000, value, timestamp) 
select beta1*100 as BChange 
insert into BChangeStream;  

from every e1=AChangeStream[e1.AChange > 0.5], e2=BChangeStream[e2.BChange > 0.15] 
select 'condition 1 alarm' as message 
insert into alertStream; 


다음 사항에 유의하십시오.

  1. lengthTimeRegress 함수에서 [2]에서 지정한대로 4 개의 필수 매개 변수를 제공해야합니다. 작성한 쿼리에서 배치 크기가 누락되었습니다. 회귀 계산에 사용되는 최대 이벤트 수는 일괄 처리 크기로 지정됩니다.
  2. 시퀀스 조건에서 매개 변수를 사용해야합니다. 스트림 이름이 아닙니다. 실수> e1.AChangeStream로 쓴 무엇 0.5> 0.5

[1] https://docs.wso2.com/display/CEP420/SiddhiQL+Guide+3.1#SiddhiQLGuide3.1-Sequence
[2] https://docs.wso2.com/display/SIDDHIEXTENSIONS/Regression

e1.AChange로 변경해야