Эспер фильтрует события по шаблону

Я пытаюсь выбрать некоторые события из потока через функцию match_recognize и получаю сообщение об ошибке. Я не могу понять, почему мой шаблон не работает или я что-то упускаю в своем утверждении. Может быть, кто-то может помочь мне с моим заявлением.

У меня есть заявление EPL:

create schema Event1(alert_id string, user_dst string, host_src string, ip_src string);

SELECT * FROM Event1.win:time(5 minute)
MATCH_RECOGNIZE  (
  partition by ip_src
  measures A as a, B as b, C as c
  pattern (A B+ C)
  define
        A as A.alert_id !='account:logout',
        B as B.alert_id !='account:logout' and B.user_dst != A.user_dst,
        C as C.alert_id !='account:logout' and C.user_dst != A.user_dst and C.user_dst != B.user_dst
)

и последовательность событий:

Event1={alert_id='account:logon-success', user_dst='admin1', host_src='xxx.ru', ip_src='10.10.0.1'}
t=t.plus(5 seconds)
Event1={alert_id='account:logon-success', user_dst='admin', host_src='xxx.ru', ip_src='10.10.0.1'}
t=t.plus(500 seconds)
Event1={alert_id='account:logon-success', user_dst='admin2', host_src='yyy.ru', ip_src='10.10.0.2'}
t=t.plus(5 seconds)
Event1={alert_id='account:logout', user_dst='admin3', host_src='yyy.ru', ip_src='10.10.0.2'}
t=t.plus(5 seconds)
Event1={alert_id='account:logon-success', user_dst='admin4', host_src='yxy.ru', ip_src='10.10.0.2'}
t=t.plus(5 seconds)
Event1={alert_id='account:logon-success', user_dst='admin', host_src='yxy.ru', ip_src='10.10.0.2'}
t=t.plus(5 seconds)
Event1={alert_id='account:logon-success', user_dst='admin', host_src='yxy.ru', ip_src='10.10.0.2'}
t=t.plus(5 seconds)
Event1={alert_id='account:logon-success', user_dst='admin3', host_src='yyy.ru', ip_src='10.10.0.2'}

В результате обработки оператора я жду этих событий:

Event1={alert_id='account:logon-success', user_dst='admin4', host_src='yxy.ru', ip_src='10.10.0.2'}
Event1={alert_id='account:logon-success', user_dst='admin', host_src='yxy.ru', ip_src='10.10.0.2'}
Event1={alert_id='account:logon-success', user_dst='admin3', host_src='yyy.ru', ip_src='10.10.0.2'}

PS: я проверяю свое утверждение на Esper EPL Online: http://esper-epl-tryout.appspot.com/epltryout/mainform.html


person hubba900    schedule 26.03.2015    source источник
comment
Укажите сообщение об ошибке и что или где оно возникает.   -  person user650839    schedule 26.03.2015
comment
Это сообщение об ошибке: сбой развертывания в выражении «SELECT * FROM Event1.win: время (5 минут) MATCH_RECO... (362 символа)»: оператор запуска ошибки: не удалось проверить выражение условия для переменной «C»: не удалось проверить match-recognize определить выражение «C.alert_id! = учетная запись: выход из системы и C.... (82 символа)»: не удалось разрешить свойство «B.user_dst» (свойство «B» является индексированным свойством и требует индекса или перечисления метод доступа к значениям) [это было утверждение]   -  person hubba900    schedule 27.03.2015
comment
Шаблон — B+, и поэтому B может иметь несколько совпадающих событий, например, массив B, а не одно событие B. Вы можете использовать B[0].user, сообщая системе, что вам нужен первый пользователь события B.   -  person user650839    schedule 28.03.2015


Ответы (1)


Я нашел решение, нужно было использовать C.user_dst != B[0].user_dst вместо C.user_dst != B.user_dst

person hubba900    schedule 27.03.2015