ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド

[目次][索引][前へ][次へ]

2.2.2 ウィンドウ演算の例

それぞれのウィンドウ演算の例を示します。

ここでは,次の図に示す構成のストリームデータが到着した場合を例に,それぞれのウィンドウの指定によって作成される入力リレーションについて説明します。

図2-6 ウィンドウ演算の例で使用するタプルの構成

[図データ]

図の横軸は時間軸です。右に行くほど時間が経過しています。t1〜t6は,タプルが到着した時刻を示します。また,各タプルは,「銘柄名,値上がり率」で構成されています。

<この項の構成>
(1) データの数による指定の例([ROWS 3]の例)
(2) 時間による指定の例([RANGE 1 SECOND]の例)
(3) 到着したタプルのタイムスタンプ時刻の指定による例(NOWの例)
(4) データのグループによる指定の例([PARTITION BY 銘柄名 ROWS 1]の例)

(1) データの数による指定の例([ROWS 3]の例)

ここでは,[ROWS 3]を指定した場合のウィンドウ演算の例について説明します。この指定は,入力リレーション内に同時に生存するタプル数が3であることを示します。

[ROWS 3]を指定した場合の入力リレーション内の各タプルの生存期間について,次の図に示します。

図2-7  [ROWS 3]を指定した場合の入力リレーション内の各タプルの生存期間

[図データ]

時刻がt1,t2,t3と経過していく中で,「(A社,1.0)」「(A社,0.8)」「(B社,1.1)」のタプルが順次到着し,入力リレーションに生成されていきます。

時刻t4に「(A社,1.0)」のタプルが到着して,同時生存タプル数が3を超えた時点で,入力リレーション内でいちばん古いタプルの生存期間が終了します。この例では,時刻t1に生成された「(A社,1.0)」のタプルが入力リレーションから削除されて,時刻t4に到着した「(A社,1.0)」のタプルが新たに入力リレーションに生成されます。

(2) 時間による指定の例([RANGE 1 SECOND]の例)

ここでは,[RANGE 1 SECOND]を指定した場合のウィンドウ演算の例について説明します。この指定は,入力リレーション内の各タプルの生存期間を1秒とすることを示します。

リレーション内に生成された各タプルは,その後到着するタプルの個数には関係なく,1秒たつと消滅します。

[RANGE 1 SECOND]を指定した場合の入力リレーション内の各タプルの生存期間について,次の図に示します。

図2-8  [RANGE 1 SECOND]を指定した場合の入力リレーション内の各タプルの生存期間

[図データ]

t1〜t4の時刻に到着したタプルは,ほかのタプルの到着状況に関係なく,1秒たつと消滅します。

(3) 到着したタプルのタイムスタンプ時刻の指定による例(NOWの例)

ここでは,[NOW]を指定した場合のウィンドウ演算の例について説明します。この指定は,入力リレーション内に現時刻のタプルだけを保持することを示します。

[NOW]を指定した場合の入力リレーション内の各タプルの生存期間について,次の図に示します。

図2-9  [NOW]を指定した場合の入力リレーション内の各タプルの生存期間

[図データ]

[NOW]を指定した場合,入力リレーション内のタプルは到着した時刻にだけ生存しています。一度演算処理が実行されたタプルは入力リレーションから消滅します。

(4) データのグループによる指定の例([PARTITION BY 銘柄名 ROWS 1]の例)

ここでは,[PARTITION BY 銘柄名 ROWS 1]を指定した場合のウィンドウ演算の例について説明します。この指定は,入力リレーション内に銘柄ごとに,ROWSに指定した個数ずつのタプルを保持することを示します。

[PARTITION BY 銘柄名 ROWS 1]を指定した場合の入力リレーション内の各タプルの生存期間について,次の図に示します。

図2-10  [PARTITION BY 銘柄名 ROWS 1]を指定した場合の入力リレーション内の各タプルの生存期間

[図データ]

この指定は,銘柄名A社およびB社ごとに,タプルを1個ずつ保存する指定です。

時刻t1に到着した「(A社,1.0)」のタプルが入力リレーションに生存している状態で時刻t2に「(A社,0.8)」のタプルが到着すると,t1に到着した「(A社,1.0)」のタプルが消滅して「(A社,0.8)」のタプルが入力リレーション内に生成されます。続いて時刻t3に「(B社,1.1)」のタプルが到着した場合は,銘柄名が異なるため,「(A社,0.8)」のタプルは消滅しないまま,新たに「(B社,1.1)」のタプルが生成されます。時刻t2に到着した「(A社,0.8)」のタプルは時刻t4に「(A社,1.0)」のタプルが到着するまで,時刻t3に到着した「(B社,1.1)」のタプルは時刻t6に「(B社,1.3)」のタプルが到着するまで,それぞれ入力リレーション内で保持されます。