2015-01-26 2 views
0

У меня есть вопрос для сообщества относительно обнаружения паттерна с помощью Esper.Эспер - обнаружение рисунка

Предположим, что вы хотите, чтобы обнаружить следующую картину среди совокупности данных: A B C

Однако, возможно, что в фактических данных, вы можете иметь: A, B, D, E, C. Моя цель - разработать правило, которое все еще может обнаружить A B C, удерживая A B в памяти и запускать предупреждение, как только оно увидит C.

Возможно ли это сделать? При стандартном выборе * из шаблона (a = event -> b = event -> c = event) он выводится только тогда, когда три находятся в последовательности данных, но не при наличии других бесполезных данных между ними.

+0

И почему Drools среди тегов? – laune

+0

Извините, это была ошибка. –

ответ

0

При стандартном «select * from pattern [a = A -> b = B]» могут быть любые события между A и B. Поэтому ваше утверждение неверно. Я думаю, вы запутались в том, как удалить бесполезные данные. Используйте фильтр, например «a = событие (... не бесполезно ...) -> b = событие (... не бесполезно ...)». Внутри parens помещают выражения фильтра, которые различают бесполезные и не бесполезные события, то есть «a = событие (количество> 10)» или что-то еще.

+0

Я попробовал пример: http://esper-epl-tryout.appspot.com/epltryout/mainform.html Вот четыре события, которые вы можете скопировать в поле «Время переадресации и отправки»: StockTick = {symbol = 'GE', цена = 20.5} StockTick = {символ = 'YHOO', цена = 65} StockTick = {символ = 'альфа', цена = 10.5} StockTick = {символ = 'бета', цена = 12.5} –

+0

И вот запрос, который вы можете написать в текстовом поле модуля EPL: создать схему StockTick (символьная строка, цена double); выберите * из рисунка [a = StockTick -> b = StockTick] где a.price = 20.5 и b.price = 10.5 –

+0

К сожалению, этот запрос ничего не выводит, даже если есть два события, которые соответствуют правилу EPL: (@ user3613754 –

Смежные вопросы