我有多个传感器将测量事件发送到流。事件由 {parameter,value,timestamp} 组成。我希望在几天的时间窗口内观察这些值,并检查趋势并对这些不同传感器监控的设备进行诊断。
from inputStream[parameter='A'] select * insert into Astream;
依此类推每个参数。
from Astream#timeseries:lengthTimeRegress(60000, value, timestamp) select beta1 * 100 as AChange insert into AChangeStream;
我为每个度量标准流做了这个。 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个参数的变化吗?
答案 0 :(得分:1)
您提供的查询的要点是正确的,除了您遗漏的一些小事。当你说6个参数时,我相信你有类似于参数A,B,C,D,E和F的东西。最终你似乎想找到一个与给定条件相匹配的事件序列[1]。
仅考虑2个参数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;
请注意以下事项。
[1] https://docs.wso2.com/display/CEP420/SiddhiQL+Guide+3.1#SiddhiQLGuide3.1-Sequence
[2] https://docs.wso2.com/display/SIDDHIEXTENSIONS/Regression