Простой подзапрос в Esper

Я хочу иметь возможность вкладывать запросы, выраженные в EPL Esper. Предположим, я хочу обнаружить этот шаблон: A -> (B -> C). (A, B и C — типы событий, -> — оператор последовательности EPL.)

Вот запрос, представляющий B -> C:

select * from pattern [every (b=B -> c=C)]

Затем я хотел бы сделать следующее:

select * from pattern [every (a=A -> bc=
    (select * from pattern [every (b=B -> c=C)])
)]

На самом деле, было бы лучше, если бы было возможно что-то вроде этого:

select * from pattern [every (b=B -> c=C)]) as bc
select * from pattern [every (a=A -> bc)]

Таким образом, первый запрос просто привязывается к идентификатору bc, который затем можно использовать во втором запросе. Это было бы круто!

Может ли кто-нибудь сказать мне, существует ли подобный синтаксис в EPL? Я ценю любой намек!


person lkbaerenfaenger    schedule 02.08.2016    source источник


Ответы (1)


запрос может быть просто...

every (a=A -> (every (b=B -> c=C))]

Или вставьте "bc" в другой поток и используйте это...

insert into BCStream select * from pattern[every b=B -> c=C]; // also note lack of parens

а также

select * from pattern[a=A -> BCStream]
person goodie    schedule 03.08.2016
comment
Большое спасибо! Не могли бы вы объяснить, почему у вас не было скобок? - person lkbaerenfaenger; 04.08.2016