Esper 中的简单子查询

Simple subquery in Esper

我希望能够嵌套以 Esper 的 EPL 表达的查询。假设我想检测这种模式:A -> (B -> C)。 (ABC 是事件类型,-> 是 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 中是否存在类似的语法?我很感激任何提示!

查询可以是...

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]