استعلام ESPER EPL للوقت (T) والوقت (T-1)
سؤال
أحاول تنفيذ استعلام EPL يمكنه التقاط AVG للوقت (T) والوقت (T-1).
علي سبيل المثال:
أ) في أول 5 ثوان (ثواني 0-5) يوجد حدثان مع AVG من 12
ب) في الثواني الخمس التالية (ثواني 5-10) هناك 3 أحداث مع AVG من 23 ، وفي استعلام EPL الذي يمسك بهذه المعلومات ، أنا قادر أيضًا على رؤية AVG من 12 من النافذة الزمنية السابقة لـ أول 5 ثوان
الفكرة التي أمتلكها هي أن أتعامل مع الكائنات/الاستعلامات بطريقة بحيث يكون لاستعلام EPL النهائي لقطة من الوقت (T) والوقت (T-1) ، كما هو موضح في ScoreInfoBeforeafter الذي تم إنشاؤه فعليًا. ومع ذلك فهو لا يعمل.
اي افكار يمكن ان تكون رائعه للعرض. شكرًا.
~~~~
// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
المحلول
يبدو مثل الكلمة الرئيسية قبل هو الحل.
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;