我希望能够嵌套在Esper的EPL中表达的查询。我们假设我想检测这种模式: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中是否存在类似的语法?我很欣赏任何提示!
答案 0 :(得分: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]