Esper EPL Запрос времени (t) и времени (t-1)
Я пытаюсь реализовать запрос EPL, который может получить среднее значение для времени (t) и времени (t-1).
Например:
а) в первые 5 секунд (секунды 0-5) происходит 2 события со средним значением 12
б) в следующие 5 секунд (секунд 5-10) происходит 3 события со средним значением 23, и в запросе EPL, который улавливает эту информацию, я также могу видеть среднее значение 12 из предыдущего временного окна первые 5 секунд
Идея, которую я имею, состоит в том, чтобы разбить объекты / запросы таким образом, чтобы в конечном запросе epl был моментальный снимок времени (t) и времени (t-1), как видно из фактически созданного объекта ScoreInfoBeforeAfter . Однако это не работает.
Любые идеи очень приветствуются. Благодарю.
~~~~
// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
1 ответ
Похоже, ключевое слово до решения.
http://esper.codehaus.org/esper-2.1.0/doc/reference/en/html/functionreference.html
Смотрите раздел 7.1.9.
С точки зрения примера, который я описал в оригинальном посте, вот соответствующее решение, которое я нашел. Кажется, работает правильно.
INSERT INTO ScoreInfo
SELECT
'ScoreInfo' as a_Label,
average AS curAvg,
prior(1, average) AS prevAvg
FROM
ScoreEvent.win:time_batch(5 sec).stat:uni(score);
SELECT
*
FROM
ScoreInfo.win:length(1);
..
И тогда это хорошо, потому что вы можете делать такие вещи:
SELECT
'GT curAvg > prevAvg' as a_Label,
curAvg,
prevAvg
FROM
ScoreInfo.win:length(1)
WHERE
curAvg > prevAvg;
SELECT
'LTE curAvg <= prevAvg' as a_Label,
curAvg,
prevAvg
FROM
ScoreInfo.win:length(1)
WHERE
curAvg <= prevAvg;