2016-09-14 6 views
2

하나의 컬럼이 널이 아닌 추가 조건을 사용하여 이벤트 테이블 (RDBMS)을 갱신하려고합니다. 테이블 이름은 MSISDNProfileDB이며 Oracle 데이터베이스에 있습니다.wso2로 널 (NULL) 값 처리 CEP

from incomingStream#window.length(1) 
select correlation_MSISDN as MSISDN, 
     INTERACTION_DT as INTERACTION_DT 
update MSISDNProfileDB 
on MSISDNProfileDB.MSISDN == MSISDN 
and not(MSISDNProfileDB.column1 is null); 

코드 유효성을 검사하지만 INTERACTION_DT는 업데이트되지 않습니다. 테스트 목적으로 필자는 열이 null인지 확인하고 column1에서 수동으로 데이터를 제거했습니다.

from incomingStream#window.length(1) 
select correlation_MSISDN as MSISDN, 
     INTERACTION_DT as INTERACTION_DT 
update MSISDNProfileDB 
on MSISDNProfileDB.MSISDN == MSISDN 
and MSISDNProfileDB.column1 is null; 

... 아직 작동하지 않습니다. 그러나 열 값을 1로 변경하면 다음과 같이됩니다.

작동합니다! 결론적으로 cep는 oracle db의 null 값에 문제가 있습니다. 누구든지 null 값을 처리하는 방법을 알고 있습니까?

친절 감사, 스테판

+0

안녕하세요, 당신은 org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException'와 유사한 예외를 받고있는 오류를 데이터베이스에서 이벤트를 업데이트, 당신은 당신의 SQL 구문에 오류가있는 반면, ... ', 이벤트를 보낼 때? – Grainier

+0

안녕하세요 Granier,이 줄을 사용하여 업데이트하려고하면 MSISDNProfileDB.column1이 null입니다 ... 탄소 기록에 오류가 있습니다 : "원인 : java.sql.SQLSyntaxErrorException : ORA-00936 : 누락 된 표현" – StStojanovic

답변

1

나는 MySQL과 비슷한 문제를 가로 질러왔다. 이 문제는 CEP가 Siddhi 쿼리를 SQL로 구문 분석하는 방식에있는 것으로 보입니다. 나는 그것을 위해 fix을 빨리했고, 내 시나리오에서 효과가 있었다. 그것은 당신의 경우에도 작동해야하지만, 오라클과 함께 테스트하지 않았습니다. 수정 프로그램을 사용하려면 (CEP 4.2.0을 사용한다고 가정);

  1. siddhi-extension-event-table_3.1.2.jar<cep>/repository/components/plugins/ 디렉토리에서 삭제하십시오.

  2. compiled jar-<cep>/repository/components/lib/ 디렉토리.

  3. 다음 쿼리를 사용하십시오.

    from incomingStream 
    select 
        correlation_MSISDN as MSISDN, 
        INTERACTION_DT as INTERACTION_DT 
    update MSISDNProfileDB 
    on MSISDNProfileDB.MSISDN == MSISDN and not (MSISDNProfileDB.column1 is null); 
    
+0

감사합니다. 당신 Grainier 귀하의 지원을 위해! CEP 4.1.0을 사용하고 있는데 4.1.0 버전에서도이 jar 파일을 컴파일 할 수 있습니까? – StStojanovic

+0

CEP 4.2.0은 Siddhi 3.1.2를 사용하고, CEP 4.1.0은 Siddhi 3.0.5를 사용합니다. 따라서 변경 사항을 [v3.0.5 태그] (https://github.com/wso2/siddhi/tree/v3.0.5)에 적용해야 할 수도 있습니다. 다음은 [v3.0.5의 패치 된 jar]입니다 (https://mega.nz/#!Qx8zRbTD!-_JySYc0KHT-pmRWGy31GX0rbF_hHIjv-eAs_SLwloE). 그것을 시도하고 볼 수 있습니다. – Grainier

+0

이제 모든 것이 작동합니다. 고마워요! 친절한 점, Stefan – StStojanovic