【问题标题】:Compare batches of average values with each other in WSO2 Stream Processor在 WSO2 流处理器中比较批次的平均值
【发布时间】:2019-10-11 10:46:04
【问题描述】:

我在 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】:

    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 的这种模式,您需要计算每个传感器的平均值。在您的应用中,如果您需要每个传感器的平均值,也可以使用 group by

    @info(name = 'Average100Query')
    from HBStream#window.lengthBatch(100)
    select ID, DateTime, Result, avg(Result) as avgResult
    group by ID
    insert into OutputStream;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2021-09-15
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      相关资源
      最近更新 更多