2015-01-26 2 views
0

에스퍼로 패턴 감지와 관련하여 커뮤니티에 대한 질문이 있습니다.에스퍼 패턴 감지

당신은 데이터의 모음 사이에 다음과 같은 패턴을 감지한다고 가정 : A B의 C 그러나

를, 그것은 실제 데이터에, 당신이있을 것이 가능하다 : A, B, D, E, C. 내 목표는 메모리에 A B를 유지하여 A B C를 감지 할 수있는 규칙을 디자인하고 C가 보자 마자 즉시 경고를 발생시키는 것입니다.

이렇게 할 수 있습니까? 표준 select * 패턴 (a = 이벤트 -> b = 이벤트 -> c = 이벤트)을 사용하면 세 개의 데이터가 연속적으로있을 때만 출력되지만 다른 쓸모없는 데이터가없는 경우에는 출력하지 않습니다.

+0

그리고 왜 Drools가 태그 중에 있습니까? – laune

+0

죄송합니다. 실수였습니다. –

답변

0

표준 "select * from pattern [a = A -> b = B]"로는 A와 B 사이에 어떤 이벤트가있을 수 있습니다. 따라서 귀하의 진술은 틀린 것입니다. 쓸모없는 데이터를 제거하는 방법에 대해 혼란스러워합니다. "a = event (... not useless ...) -> b = event (... not useless ...)"와 같은 필터를 사용하십시오. 괄호 안에는 쓸모없고 쓸모없는 이벤트, 즉 "a = 이벤트 (금액> 10)"또는 무엇이든간에 구별하는 필터 표현식을 넣습니다.

+0

예를 들어 보았습니다 : http://esper-epl-tryout.appspot.com/epltryout/mainform.html "Advance Time and Send Events"필드에 복사 할 수있는 네 가지 이벤트가 있습니다 : StockTick = {symbol = 'GE', 가격 = 20.5} StockTick = {심볼 = "YHOO '가격 ='알파 '가격 = 10.5} StockTick = {심볼 ='베타 ', 가격 65} StockTick = {심볼 = 12.5} –

+0

다음은 EPL 모듈 텍스트 필드에 작성할 수있는 쿼리입니다. create schema StockTick (symbol string, price double); select * from 패턴 [a = StockTick -> b = StockTick] 여기서 a.price = 20.5 및 b.price = 10.5 –

+0

불행히도이 쿼리는 EPL 규칙과 일치하는 두 개의 이벤트가 있어도 아무 것도 출력하지 않습니다. (@ user3613754 –