2017-04-16 4 views
0

where 열거 메서드 및 문제가있는 Esper 설명서의 예제를 확장하려고합니다. 다음은 문제의 예입니다.Esper Lambda 식 사용 시도

select items.where(i => i.location.x = 0 and i.location.y = 0) as zeroloc 
from LocationReport 

내가 뭘하고 싶은지는 꽤 간단 해 보입니다. 대신이 표현과 일치 items을 선택하는 : 내가 원하는

  • 는 표현과 일치 적어도 하나의 item를 포함 LocationReport의를 선택합니다.

  • time_batch 창 (강조 텍스트 일괄 처리되지 않은 시간 창도 가능).

그래서 모든 N초 수 I는 각 보고서는 항목 목록에 하나 이상의 제로 위치를 포함하는 LocationReport의 컬렉션을받을 것입니다. 참조를 들어

, 여기에 에스퍼 예에서 사용되는 자바 객체의 구조 :

공용 클래스 LocationReport {목록 항목; ...

public class Item {String assetId; // 승객 또는 수하물 자산 id 위치 위치; // (x, y) location 부울 수하물; // 이 항목이 수하물 인 경우 true String assetIdPassenger; // 품목이 수하물 인 경우 승객과 관련된 승객이 포함되어 있습니다 ...

public class Location {int x; int y; ...

배경 세부 : LocationReport 가정은 위의 예에서 where 논리 작품처럼 EPL을 사용하여 난에 ...
관심이 실제 객체이지만, 문제는, 만 반환에 items 회원은 클래스를 보지 못했습니다. items 이외의 다른 속성이 포함되어 있습니다. 즉, UpdateListener이 필요합니다.

또한 관련이 없을 수도 있지만 내 경우에는 많은 LocationReports가 중복 된 (또는 중복으로 간주 될만큼 충분히 가까운) 높은 속도의 메시지를 수신하고 있으며 내 where 절은 해당 결정을 내리고 앞으로 "새"메시지.

감사합니다!

+0

문제를 재현하는 테스트 가능한 코드를 추가해야합니다. 예상 결과와 현재 결과를 언급하면 ​​누군가가 문제를 해결하도록 도울 수 있습니다. –

답변

1

"*"를 선택 항목에 추가하면 이벤트 객체가 표시됩니다. select *, items.where(...) from LocationReport "N 초마다 출력"을 출력에 추가 할 수 있습니다. 시간 창에 "#time (...)"을 추가하십시오.