2016-07-26 36 views
0

我想用流水线的方式使用Esper进行一些事件处理。我需要为每个事件检查多个案例。例如,假设我想针对以下情况运行我的传入数据。我会怎么做?做这件事的最好方法是什么?Esper - 我们可以使用esper进行流水线时尚处理吗?

壳体1 =“如果当前电平比平均最后5倍连续的值的较大的400%,则标记与异常-1事件”
壳体2 =“如果当前电平值是空然后标记为例外-2"
情况下3 =‘如果案例2和案例3不匹配,那么数据被标记为‘安全’’

以下是我想做的事情表示粗糙

 if (case1) { 
     mark with Exception 1 
    } 

    if (case2) { 
     mark with Exception 2 
    } 

    if (none of the above cases matches) { 
     mark as safe 
    } 
+0

@goodie能否请你也回答了这一点 - >“如果目前的水平是高于平均最后5个连续的值大于400%,则标记为‘Exception1’,如果是空的标志'例外2',否则标记为'安全'“而且它们应该由事件的'location_id'属性分区。在计算平均值5个连续值进行检查时,它应该只考虑该location_id的连续值,而不考虑其他位置。 –

回答

0

像这样的事情

on Event 
insert into OutputStream select 'Exception 1' as label, * where level_detected > 400 
insert into OutputStream select 'Exception 2' as label, * where level_detected = null 
insert into OutputStream select 'safe' as label, * 

你也没问怎么办的检测“如果目前的水平是高于平均最后5个连续的值大于400%,”所以这不是我答案的一部分。

Esper docs for split stream

+0

谢谢@goodie,它真的有帮助 –

+0

你能否也请回答这一点 - >“如果当前水平比最后5个连续值的平均值大400%,那么标记为'Exception1',如果它为空标记为'例外2',否则标记为“安全” 此外,它们应该由事件的'location_id'属性进行分区。在计算平均值5个连续值进行检查时,它应该只考虑该location_id的连续值,而不考虑其他位置。 –

+0

非常感谢〜 –