2

Time(t) & Time(t-1) の平均を取得できる EPL クエリを実装しようとしています。

例えば:

a) 最初の 5 秒間 (0 ~ 5 秒) に、平均 12 のイベントが 2 つある

b) 次の 5 秒間 (5 秒から 10 秒) に、平均 23 の 3 つのイベントがあり、この情報をキャッチする EPL クエリでは、前の時間ウィンドウからの平均 12 も確認できます。最初の5秒

私が持っているアイデアは、仮想的に作成されたオブジェクト ScoreInfoBeforeAfter に見られるように、最終的な epl クエリが Time(t) & Time(t-1) のスナップショットを持つようにオブジェクト/クエリをずらすことです。しかし、それは機能していません。

どんなアイデアでも大歓迎です。ありがとう。

~~~~

// The object being published to the Esper stream:
class ScoreEvent { int score; ... }
4

1 に答える 1

7

のキーワードが解決策のようです。

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;
于 2010-10-27T22:01:16.773 に答える