Domanda

Sto cercando di implementare una query EPL in grado di raccogliere il medio per un tempo (t) e ora (t-1).

  

Ad esempio:

     
    

a) nei primi 5 secondi (secondi 0-5) ci sono 2 eventi con una media di 12

         

b) nei prossimi 5 secondi (secondi 5-10) ci sono 3 eventi con una media di 23, e nella query EPL che le catture di queste informazioni, sono in grado di vedere anche la media di 12 dalla volta precedente la finestra dei primi 5 secondi

  

L'idea che ho è di scaglionare gli oggetti / query in modo tale che la query un finale EPL ha una fotografia istantanea del Tempo (t) e ora (t-1), come si vede nel ScoreInfoBeforeAfter oggetto praticamente creato. Tuttavia non funziona.

Tutte le idee sarebbe molto apprezzato. Grazie.

~~~~

// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
È stato utile?

Soluzione

appare come la parola prima è la soluzione.

http: //esper.codehaus. org / esper-2.1.0 / doc / riferimento / it / html / functionreference.html

See: Sezione 7.1.9

In termini di esempio ho descritto nel post originale, ecco la soluzione corrispondente ho trovato. E sembra funzionare correttamente.

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

..
E poi è bello, perché si può fare cose come questa:

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top