Wso2 如何在两个窗口上进行计算/比较?

Wso2 如何在两个窗口上进行计算/比较?,wso2,wso2sp,Wso2,Wso2sp,我正在收集不同id的事件,传入事件中有n种固定id。我想根据不同类型ID之间的时间范围或事件数收集过去事件的平均值。 比方说,有两台设备发送id为“a”和“b”的数据/事件。我想得到两台设备过去5分钟的平均数据,然后比较这两个平均值,做出一些决定 通过这段代码,我正在收集过去n分钟的数据并存储在2个窗口中。 ` 窗口hold_a和hold_b将获得过去5分钟的平均数据。现在我想比较两个窗口的数据并做出决定 我在两个窗口上都尝试了join,但join query没有执行。您必须使用一种模式来实现这

我正在收集不同id的事件,传入事件中有n种固定id。我想根据不同类型ID之间的时间范围或事件数收集过去事件的平均值。 比方说,有两台设备发送id为“a”和“b”的数据/事件。我想得到两台设备过去5分钟的平均数据,然后比较这两个平均值,做出一些决定

通过这段代码,我正在收集过去n分钟的数据并存储在2个窗口中。 `

窗口hold_a和hold_b将获得过去5分钟的平均数据。现在我想比较两个窗口的数据并做出决定


我在两个窗口上都尝试了join,但join query没有执行。

您必须使用一种模式来实现这一点。在下面的查询中,将平均值最高的名称输出到highestAvgStream

@source(type='http', receiver.url='http://localhost:5007/SweetProductionEP', @map(type = 'json'))
define stream InProduction(name string, amount int);

from InProduction[name=='a']#window.timeBatch(5 min)
select avg(amount) as avg_amount, name
insert into avgStream;

from InProduction[name=='b']#window.timeBatch(5 min)
select avg(amount) as avg_amount, name
insert into avgStream;`

from every(e1=avgStream -> e2=avgStream)
select ifthenelse(e1.avg_amount>e2.avg_amount,e1.name,e2.name) as highestAvgName
insert into HighestAvgStream;

你想要什么样的比较?了解这些信息将有助于给出一些答案。@suho比较,如>,=在两个窗口中获取数据后,我想检查在过去n分钟内哪个值较高/较低。
@source(type='http', receiver.url='http://localhost:5007/SweetProductionEP', @map(type = 'json'))
define stream InProduction(name string, amount int);

from InProduction[name=='a']#window.timeBatch(5 min)
select avg(amount) as avg_amount, name
insert into avgStream;

from InProduction[name=='b']#window.timeBatch(5 min)
select avg(amount) as avg_amount, name
insert into avgStream;`

from every(e1=avgStream -> e2=avgStream)
select ifthenelse(e1.avg_amount>e2.avg_amount,e1.name,e2.name) as highestAvgName
insert into HighestAvgStream;