wso2 cep Siddhiql

wso2 cep Siddhiql,wso2,siddhi,Wso2,Siddhi,我有多个传感器向流发送测量事件。事件由{参数、值、时间戳}组成。我希望在几天的时间窗口内观察这些值,检查趋势,并对这些不同传感器监控的设备进行诊断 按参数划分流。 对于接收到的每个参数,依此类推 对于时间窗口,例如60秒,计算线性回归以找到变化。 这是我为每个度量流所做的。 3.一旦我有了每个流的趋势,我收集每个流的更改值,并检查它们是否满足条件 from every e1=AChangeStream[e1.AChangeStream > 0.5], e2=BChangeStream[e2.BC

我有多个传感器向流发送测量事件。事件由{参数、值、时间戳}组成。我希望在几天的时间窗口内观察这些值,检查趋势,并对这些不同传感器监控的设备进行诊断

按参数划分流。 对于接收到的每个参数,依此类推

对于时间窗口,例如60秒,计算线性回归以找到变化。 这是我为每个度量流所做的。 3.一旦我有了每个流的趋势,我收集每个流的更改值,并检查它们是否满足条件

from every e1=AChangeStream[e1.AChangeStream > 0.5], e2=BChangeStream[e2.BChangeStream 0.15] select 'condition 1 alarm' as message insert into alertStream;
上面的siddhi ql会检测到时间窗口中6个参数的变化吗?

您提供的查询要点是正确的,除了您遗漏的一些小事情。当你说6个参数时,我相信你有一些类似于参数A、B、C、D、E和F的东西。最终你似乎想要找到一系列符合给定条件的事件[1]

考虑到只有两个参数A和B,您可以用Siddhi语言编写查询,如下所示,以满足您的需求

@Import('input:1.0.0') define stream inputStream (parameter string, value double, timestamp long); from inputStream[parameter=='A'] select * insert into Astream; from inputStream[parameter=='B'] select * insert into Bstream; from Astream#timeseries:lengthTimeRegress(60000, 10000, value, timestamp) select beta1*100 as AChange insert into AChangeStream; from Bstream#timeseries:lengthTimeRegress(60000, 10000, value, timestamp) select beta1*100 as BChange insert into BChangeStream; from every e1=AChangeStream[e1.AChange > 0.5], e2=BChangeStream[e2.BChange > 0.15] select 'condition 1 alarm' as message insert into alertStream; 请注意以下几点

在lengthTimeRegress函数中,您需要提供4个必填参数,如[2]中所述。您在编写的查询中遗漏了批次大小。用于回归计算的最大事件数由批大小指定。 在序列条件中,需要使用参数。不是流名称。错误编写为e1.AChangeStream>0.5的内容必须更改为e1.AChange>0.5 [1] [2]

from every e1=AChangeStream[e1.AChangeStream > 0.5], e2=BChangeStream[e2.BChangeStream 0.15] select 'condition 1 alarm' as message insert into alertStream; @Import('input:1.0.0') define stream inputStream (parameter string, value double, timestamp long); from inputStream[parameter=='A'] select * insert into Astream; from inputStream[parameter=='B'] select * insert into Bstream; from Astream#timeseries:lengthTimeRegress(60000, 10000, value, timestamp) select beta1*100 as AChange insert into AChangeStream; from Bstream#timeseries:lengthTimeRegress(60000, 10000, value, timestamp) select beta1*100 as BChange insert into BChangeStream; from every e1=AChangeStream[e1.AChange > 0.5], e2=BChangeStream[e2.BChange > 0.15] select 'condition 1 alarm' as message insert into alertStream;