2016-11-15 6 views
0

ユーザガイドによると、externalTimeウィンドウ(タイムスタンプ、時間値)は、タイムスタンプからタイムスタンプ+時間値までの範囲内のイベントのみを保持すると仮定します。例えばwso2 cep externalTime issue

、実行計画

from input 
select time:timestampInMilliseconds(time:dateAdd("2016-11-14 19:40:00", 5, 'minute',"yyyy-MM-dd HH:mm:ss"),'yyyy-MM-dd HH:mm:ss') as tm 
insert into tmp; 
from tmp#window.externalTime(tm,10 min) 
select ..... 

に私はその時間枠は、2016年11月14日19時55分00秒まで、2016年11月14日夜7時45分00秒から限定されているはず。

実際には、19:55以降のイベントもサイト運営者に放棄されます。

バグですか?

いいえの場合、正確な時刻からウィンドウを作成するにはどうすればよいですか?

答えて

0

これはバグではありません。私は、あなたがexternalTimeウィンドウの使い方を誤解していると思います。 ExternalTimeウィンドウはではなく、固定時間ウィンドウです。これは、時間ウィンドウと同様のスライド時間ウィンドウです。ただし、タイムウィンドウとexternalTimeウィンドウの違いは、実際のイベント受信時刻(イベントがウィンドウに到着したときのシステム時刻)を使用してストリーム定義に定義されているタイムスタンプ属性(外部タイムスタンプ)を使用することです。その特定のイベントのウィンドウを決定する。イベントストリームを再生したい場合や、実際のイベント発生時間が受信時間と異なる場合(ネットワーク遅延のため)など便利です。

AFAIU 2016-11-14 19:45:002016-11-14 19:55:00(一定の時間範囲)の間に到着したイベントは、単にそのためのフィルタを使用できます。下記のサンプルを参照してください。それ以外の場合は、その目的のために独自の拡張機能を作成する必要があります(guide on writing custom extensions)。

from input 
select time:timestampInMilliseconds() tm 
insert into tmpStream; 

-- 5 * 60 * 1000 Milliseconds = 5 min 
from tmpStream[tm - time:timestampInMilliseconds('2016-11-14 19:45:00.000') >= 5 * 60 * 1000] 
select * 
insert into withInTimeStream; 
関連する問題