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