我想从4个输入流中生成一个流。例如,
from s1[at1>0], s2[at2==2], s3[at3>1], s4[at4 is null]
select 'k' as res
insert into s5;
第一个问题是,如果我在Siddhi中以其他顺序输入事件,请尝试它,它不会产生结果。
其次,如果我没有输入其中一个事件,那么也不会产生结果。而且,如果我没有在属性at4
中放置值,则会产生错误。
如果'k'
没有价值或事件at4
没有来,我的目标是将s4
置于资源中。
答案 0 :(得分:1)
在上面你使用的是序列[1]。序列要求所有传入事件按特定顺序排列。因此,在上面给出的查询中,当且仅当您按顺序依次获得事件时,才会获得输出。 1. at1> 0的事件 2. at2 = 2的事件 3. at3> 1的事件 4. at4 = null
的事件如果其中一个事件没有发生或条件没有,你就不会获得输出。这就是为什么你没有得到任何结果,这是预期的行为。您能否确认您的需求是否仅适用于"把' k'在res中,如果at4没有价值或事件s4没有来。"如果是这种情况,我可以帮助您解决查询问题。
Siddhi尝试它不允许你保持属性字段未定义。当你没有投入价值时,这就是你得到和错误的原因。 Siddhi也不允许您不发送已定义的属性。 Siddhi总是要求您发送所有已定义的属性。唯一可能的是,您的支票所涵盖的属性变为空。
[1] https://docs.wso2.com/display/CEP420/SiddhiQL+Guide+3.1#SiddhiQLGuide3.1-Sequence