Frage

Ich versuche, eine EPL-Abfrage zu implementieren, die die avg für Time abholen (t) & Zeit (t-1).

  

Zum Beispiel:

     
    

a) in den ersten 5 Sekunden (seconds 0-5) gibt es 2 Ereignisse mit einer avg von 12

         

b) in den nächsten 5 Sekunden (Sekunden 5-10) gibt es 3 Veranstaltungen mit avg von 23, und in der EPL-Abfrage, dass Fänge diese Informationen, ich bin in der Lage, auch die avg von 12 von der vorhergehenden Zeit zu sehen Fenster der ersten 5 Sekunden

  

Die Idee, die ich habe, ist die Objekte / Abfragen in einer solchen Art und Weise staffeln, dass die endgültige epl Abfrage eine Momentaufnahme der Zeit hat (t) & Zeit (t-1), in der virtuell erstellte Objekt ScoreInfoBeforeAfter gesehen. Allerdings ist es nicht funktioniert.

würde Irgendwelche Ideen sehr geschätzt. Danke.

~~~~

// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
War es hilfreich?

Lösung

Sieht aus wie das Schlüsselwort vor ist die Lösung.

http: //esper.codehaus. org / Esper-2.1.0 / doc / Referenz / en / html / functionreference.html

Siehe auch: Abschnitt 7.1.9

In Bezug auf das Beispiel, das ich in der ursprünglichen Nachricht beschrieben, ist hier die entsprechende Lösung, die ich gefunden. Es scheint, richtig zu arbeiten.

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);

..
Und dann ist es schön, weil man Sachen wie diese tun kann:

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top