2017-02-09 6 views
0

동일한 이벤트 테이블에서 합계 다른 행 : 나는의 값을 계산 곳WSO2의 CEP - - SiddhiQL 내가 EVENTCOUNT 하나 개의 이벤트 테이블이라고하며 다음과 같은 값을 가지고있다

ID | eventCount 
1   3 
2   1 
3   5 
4   1 

내가 들어오는 데이터 스트림이 어떤 유형의 기간 (1 초) 및 유형 및 시간 기간에 따라 count() 및 count() 값을 해당 행에 씁니다.

이벤트 테이블 내에서 값의 합계를 만들어야합니다.

다른 이벤트 테이블을 작성하고 둘 다 결합하려고했습니다. 비록 당신이 오류를 얻고 있지만 2 정적 소스에서 가입 할 수 없습니다.

시나리오에서

답변

0

WSO2 CEP에 SIddiQL에서이 일을의 올바른 방법은 무엇입니까, 이벤트 테이블에있는 값의 합계는 이벤트의 총 수에 해당하지 않는입니까? 그렇다면 이벤트 테이블을 유지해야하는 이유는 무엇입니까?

@Import('dataIn:1.0.0') 
define stream dataIn (id int); 

@Export('totalCountStream:1.0.0') 
define stream totalCountStream (eventCount long); 

@Export('perIdCountStream:1.0.0') 
define stream perIdCountStream (id int, eventCount long); 

partition with (id of dataIn) 
begin 
    from dataIn#window.time(5 sec) 
    select id, count() as eventCount 
    insert into perIdCountStream; 
end; 

from dataIn#window.time(5 sec) 
select count() as eventCount 
insert into totalCountStream; 

ps : 정말로 이벤트 테이블이 필요한 경우, 항상 두 개의 별도 테이블에 totalCountStream 및 perIdCountStream을 유지할 수 있습니다.

+0

문제는 단지 이벤트 합계가 아니라 백분율도 있다는 것입니다. 테이블이 정말 필요해. – JoaoFilipeClementeMartins

+0

백분율이 필요한 경우 perIdCountStream을 totalCountStream과 결합하여 계산할 수 있습니다. 그렇지 않으면 사용자 정의 스트림 프로세서 확장을 작성하여 모든 집계 된 값을 계산하고 방출해야 할 수 있습니다. 특정 기간 (1 초) 동안 값을 집계하고 저장하고 있으므로 이벤트 테이블이 필요하지는 않습니다. – Grainier