如何 select 来自过滤器的属性?

How to select an attribute from filters?

我有一个查询写成 -

from xyzStream [str:contains(name,'John') or str:contains(name,'Peter')  or str:contains(name,'Sandy') ]
select name 
insert into outputStream

但现在我想在传递匹配的过滤器子字符串的地方进行增强。例如,如果 str:contains(name,'John') returns 为真,则在输出流中插入 'John'。

有没有办法在 SiddhiQL 中做到这一点?

截至目前,这还不受支持,但是您可以在 select 子句中使用 str:contains 和 ifthenElse,

执行相同的操作
from xyzStream [str:contains(name,'John') or str:contains(name,'Peter')  or str:contains(name,'Sandy') ]
select name, 
    ifthenElse(str:contains('John'), 'John', ifThenElse(str:contains('Peter'), 'Peter', 'Sandy')) as matchedString
insert into outputStream

有关 ifThenElse 函数的更多详细信息,请参阅 example