2017-10-11 1 views
0

最近私はEsperで作業していましたが、ドキュメントには載っていない機能がありますが、存在する可能性があります。Esper:時間積算ウィンドウにイベントを追加すると、属性の条件が1つ提供されました。

誰もが15秒間ポップアップを表示しなくなるまで、いくつかのイベントを保存したいと思います。

つのクエリは、正確には、それはだん:

select rstream * from MyEvent.win:time_accum(15 sec) 

私は

select rstream * from MyEvent where status = 'ALARM_END'.win:time_accum(15 sec) 

ようMyEventに条件を追加することができ、これは完璧に動作します。

今、私はそれを言ってのeventType属性に条件を追加したいと思います:

新しいイベントがeventTypeをしてトリガされXXXXが、ウィンドウ内のeventType xxxxの持つイベントがすでに存在しているが、これを追加しない場合新しいポップイベントがウィンドウに表示されます(したがって、ストップウォッチは0〜15秒間停止しません)。

これを行う方法はありますか?

ありがとうございます!

EDIT:

私の必要性とエスパーのドキュメントに、より深く見て、私は私の必要性は、私は、私はちょうどどちらか蓄積したいと私はRSTREAMを必要としないと思う

select * from MyEvent.win:time_length_batch(15 sec, 2) 

と、より満足していると思います1つまたは2つの要素を取得し、それらを一度に配列で取得します(新しいイベントの場合は問題ありません)。

ただし、最初に(そして最初の)MyEventのウィンドウに入る条件を追加することは可能ですか?ステータス= 'ALARM_END'です。

答えて

0

名前付きウィンドウがあり、挿入する前にそのウィンドウを確認することができます。

// define named window 
create window MyEventWindow#time_accum(15) as MyEvent; 

// insert events that don't have 'xxx' 
insert into MyEventWindow select * from MyEvent(eventType != 'xxx'); 

// insert events that have 'xxx' only if not already there 
insert into MyEventWindow select * from MyEvent(eventType = 'xxx') 
    where not exists(select * from MyEventWindow where eventType='xxx'); 

// usual select 
select rstream * from MyEventWindow; 
+0

こんにちは、お返事ありがとうございます。 私は私の質問ではっきりしていないかもしれないと思う。 'xxxx'は固定変数ではありません。 – Tchak

+0

現在のウィンドウにeventTypes 'eT1'、 'eT2'、および 'eT3'という3つのイベントがあるとします。新しいイベントがトリガされた場合、イベントタイプが 'eT1'、 'eT2'、 'eT3'と異なる場合にのみウィンドウに追加されます。 よろしくお願いいたします。 – Tchak

+0

注:イベントのリストに「xxxx」のすべてのイベントの3行目を書くのは、最適ではないソリューションを使用することができます。 – Tchak

関連する問題