EPR EPL запрос для времени (T) и времени (T-1)
Вопрос
Я пытаюсь осуществить запрос EPL, который может забрать AVG для времени (T) & Time (T-1).
Например:
а) в первые 5 секунд (секунды 0-5) есть 2 события с AVG 12
b) в следующие 5 секунд (секунды 5-10) есть 3 события с AVG 23, а в запросе EPL, который ловит эту информацию, я могу также увидеть AVG 12 из окон предыдущего времени Первые 5 секунд
Идея, которую у меня есть, - это потемнение объектов / запросов таким образом, что последний запрос EPL имеет снимок времени (T) & Time (T-1), как видно в практически созданном объекте BatchInFobeforefter. Однако это не работает.
Любые идеи очень приветствуются. Спасибо.
~~~~
// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
Решение
Выглядит как ключевое слово прежний это решение.
http://esper.codehaus.org/esper-2.1.0/doc/reference/en/html/funcentreference.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;