Pregunta

Estoy tratando de implementar una consulta EPL que puede recoger el promedio de tiempo (T) y el tiempo (t-1).

  

Por ejemplo:

     
    

a) en los primeros 5 segundos (segundos 0-5) hay 2 eventos con un promedio de 12

         

b) en los próximos 5 segundos (segundos 5-10) hay 3 eventos con un promedio de 23, y en la consulta EPL que las capturas de esta información, yo soy capaz de ver también el promedio de los 12 a partir de la hora anterior ventana de los primeros 5 segundos

  

La idea que tengo es escalonar los objetos / consultas de tal manera que la consulta EPL final tiene una instantánea de tiempo (T) y el tiempo (t-1), como se ve en la ScoreInfoBeforeAfter objeto virtualmente creado. Sin embargo, no está funcionando.

Cualquier idea sería muy apreciada. Gracias.

~~~~

// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
¿Fue útil?

Solución

Parece que la palabra clave antes es la solución.

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

Ver: Sección 7.1.9

En términos del ejemplo I descritos en los post original, aquí está la solución correspondiente que encontré. Parece estar funcionando correctamente.

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

..
Y entonces es agradable, porque se puede hacer cosas como esta:

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top