ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド
ウィンドウ演算では,4種類のウィンドウによって,処理対象を特定します。
それぞれのウィンドウによって生成される入力リレーションについて説明します。
ROWSウィンドウは,タプルの数によって入力リレーションの範囲を特定するウィンドウです。
例えば,ストリームs1の入力ストリームデータの直前3個分を入力リレーションとして保持する場合,CQLは次のように定義します。
SELECT … FROM s1 [ROWS 3]…
この場合の入力リレーションの内容を次の図に示します。
図2-3 ROWSウィンドウの例
すでにリレーションにA,B,Cの三つのタプルがある場合に新たなタプルDが到着した場合,到着タプルを含む三つのタプルが入力リレーションの内容になります。このとき,いちばん古いタプルAは,入力リレーションの対象から外れます。
RANGEウィンドウは,時間によって入力リレーションの範囲を特定するウィンドウです。
例えば,ストリームs2の入力ストリームデータの直前3秒分を入力リレーションとして保持する場合,CQLは次のように定義します。
SELECT … FROM s2 [RANGE 3 SECOND]…
この場合の入力リレーションの内容を次の図に示します。
図2-4 RANGEウィンドウの例
タプルCの到着時,現在から直前3秒間分のタプルだけが入力リレーションに残ります。タプルC到着後,タプルBが3秒前のタプルとなり,それよりも前に到着していたタプルAは入力リレーションの対象から外れます。
NOWウィンドウは,その時点で到着したタプルのタイムスタンプ時刻だけを演算の対象にするためのウィンドウです。
ほかのウィンドウで特定する入力リレーションが個数や時間の範囲を持つ「線」のリレーションであるのに対して,NOWウィンドウは到着したタプルと同時刻という「点」のリレーションになります。
例えば,ストリームs3の入力ストリームデータについて,到着したタプルと同時刻のタプルを演算の対象とする場合,CQLは次のように定義します。
SELECT … FROM s3 [NOW]
PARTITION BYウィンドウは,タプルの種類ごとに,タプルの個数によって入力リレーションの範囲を特定するウィンドウです。
例えば,ストリームs4の入力ストリームデータについて,列指定リストa1の各値について直前3個分を入力リレーションとして保持する場合,CQLは次のように定義します。
SELECT … FROM s4 [PARTITION BY a1 ROWS 3]
この場合の入力リレーションの内容を次の図に示します。
図2-5 PARTITION BYウィンドウの例
a1列の値として,xとyがあり,それぞれ直前3個分を入力リレーションとして保持しています。a1がyのタプルが到着すると,a1の値がyのタプル(タプルD)が一つ,入力リレーションの対象から外れます。
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.