Сравните пакеты средних значений друг с другом в потоковом процессоре WSO2

Я написал код на Siddhi, который регистрирует / печатает среднее значение пакета из последних 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 ответ

Решение

Последовательности сиддхи могут использоваться для сопоставления средних значений и определения тенденции, https://siddhi.io/en/v5.1/docs/query-guide/

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; 

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

@info(name = 'Average100Query')
from HBStream#window.lengthBatch(100)
select ID, DateTime, Result, avg(Result) as avgResult
group by ID
insert into OutputStream;
Другие вопросы по тегам