سؤال

أحاول تنفيذ استعلام 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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top