簡體   English   中英

比較 WSO2 Stream 處理器中的批次平均值

[英]Compare batches of average values with each other in WSO2 Stream Processor

我在 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;

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM