在WSO2流处理器中比较平均值的批次

问题描述 投票:0回答:1

我已经在Siddhi中编写了一些代码,用于记录/打印最近100个事件的一批平均值。因此,事件0-100、101-200等的平均值。我现在想将这些平均值相互比较以找到某种趋势。首先,我只想了解一定数量的平均值是否存在一些简单的上升趋势。例如,我想将所有平均值与所有即将出现的1-10个平均值进行比较。

我查看了Siddhi文档,但没有找到想要的答案。我尝试了一些分区解决方案,但这没有用。下面的代码是我现在拥有的。

define stream HBStream(ID int, DateTime String, Result double);

@info(name = 'Average100Query')
from HBStream#window.lengthBatch(100)
select ID, DateTime, Result, avg(Result)
insert into OutputStream;
wso2 siddhi stream-analytics streaming-analytics
1个回答
1
投票

Siddhi序列可用于匹配平均值并识别趋势,https://siddhi.io/en/v5.1/docs/query-guide/#sequence

from every e1=HBStream, e2=HBStream[e2.avgResult > e1.avgResult], e3=HBStream[e3.avgResult > e2.avgResult]
select e1.ID, e3.avgResult - e1.avgResult as tempDiff
insert into TempDiffStream; 

[请注意,您需要使用分区来确定每个ID的模式,因为您需要根据每个Sensor计算平均值。在您的应用中,如果您需要每个传感器的平均值,也可以使用分组依据

@info(name = 'Average100Query')
from HBStream#window.lengthBatch(100)
select ID, DateTime, Result, avg(Result) as avgResult
group by ID
insert into OutputStream;
© www.soinside.com 2019 - 2024. All rights reserved.