2014-10-09 5 views
0

WSO2 CEP 사용자 지정 함수가 집계 함수로 작동하지 않고 대신 데이터의 각 행에서 작동합니다.WSO2 CEP 사용자 지정 함수가 집계 함수로 작동하지 않음

입력 스트림에 value1과 value2가 있다고 가정 해 보겠습니다.

  • 호스트 : A, 값 1 : 1, 값 2 : 10
  • 호스트 : A, 값 1 : 2, 값 2 : 20
  • 호스트 : A, 값 1 : 3 1, 값 30
  • 호스트 : A, 값 1 : 4, 값 2 : 40
  • 호스트 : A, 값 1 : 5, 값 2 :

(50)는 지금은 호스트에 의해 시간 배치 및 그룹화를 수행했다. 그리고 MEDIAN을 찾고 사용자 정의 함수 SUM을 사용하는 사용자 정의 함수를 작성했습니다.

하지만 그룹화 후에 5 행 모두에 대해 SUM 함수가 적용되지만 사용자 정의 함수가 행별로 호출됩니다. 사용자 지정 함수 클래스의 프로세스 메서드가 행 단위로 호출되었습니다. 따라서 SUM은 15를 반환하지만 MEDIAN 함수는 최종 값 2 인 출력을 50으로 제공합니다. 사용자 정의 기능 만 생각하면

는 실행 계획 쿼리

from inputStream#window.timeBatch(10 sec) 
select value1 as value1, value2 as value2, sum(value1) as sumOfValue1, custom:median(value2) as medianOfValue2 group by host 
insert into outputStream; 

사용자 정의 기능 자바 클래스 코드 조각은

/** 
    * Method called when sending events to process 
    * 
    * @param obj 
    * @return 
    */ 
    @Override 
    protected Object process(Object obj) { 

는 우리는 사용자 정의 집계 함수는, 또는 실행 할 수 없습니다 행 기준으로 행에 ???

답변

0

사용자 정의 기능 대신 custom OutputAttributeAggregator을 작성하여이 문제를 해결할 수 있습니다. OutputAttributeAggregator는 이러한 시나리오에 사용되어야하며 함수는 개별 행에 사용됩니다.