Сравните партии средних значений друг с другом в потоковом процессоре WSO2 - PullRequest
0 голосов
/ 11 октября 2019

Я написал некоторый код в Сиддхи, который регистрирует / печатает среднее значение пакета из последних 100 событий. Итак, среднее значение для событий 0-100, 101-200 и т. Д. Теперь я хочу сравнить эти средние значения друг с другом, чтобы найти какую-то тенденцию. Прежде всего, я просто хочу посмотреть, есть ли какой-нибудь простой нисходящий тренд для определенного количества средних. Например, я хочу сравнить все средние значения со всеми предстоящими 1-10 средними значениями.

Я изучил документацию по сиддхи, но не нашел ответа, который хотел. Я пробовал некоторые решения с разметкой, но это не сработало. Код ниже - это то, что у меня есть сейчас.

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;

1 Ответ

1 голос
/ 16 октября 2019

Последовательности сиддхи могут быть использованы для сопоставления средних значений и определения тренда, 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; 

Обратите внимание, что вам нужно использовать разделение, чтобы решить, что этот шаблон для каждого идентификатора необходим для вычисления средних значений. на датчик. В вашем приложении также используйте группу по, если вам нужно среднее значение для каждого датчика

@info(name = 'Average100Query')
from HBStream#window.lengthBatch(100)
select ID, DateTime, Result, avg(Result) as avgResult
group by ID
insert into OutputStream;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...