Pergunta

Estou tentando implementar uma consulta EPL que possa pegar o AVG para o tempo (t) e o tempo (T-1).

Por exemplo:

a) Nos primeiros 5 segundos (segundos 0-5), existem 2 eventos com um AVG de 12

b) Nos próximos 5 segundos (segundos 5-10), existem 3 eventos com um AVG de 23 e, na consulta EPL que captura essas informações, também posso ver o AVG de 12 da janela de tempo anterior do Primeiros 5 segundos

A idéia que tenho é escalonar os objetos/consultas de tal maneira que a consulta EPL final tem um instantâneo de tempo (t) e tempo (T-1), como visto no objeto de objeto praticamente criado. No entanto, não está funcionando.

Quaisquer idéias seriam muito apreciadas. Obrigado.

~~~~

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

Solução

Parece a palavra -chave anterior é a solução.

http://esper.codehaus.org/esper-2.1.0/doc/reference/en/html/functionReference.html

Ver: Seção 7.1.9

Em termos do exemplo que descrevi na postagem original, aqui está a solução correspondente que encontrei. Parece estar funcionando corretamente.

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 então é bom, porque você pode fazer coisas assim:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top