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

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

2.3.2 結合処理の例

ここでは,s1,s2の2種類の入力リレーションを銘柄ごとに結合した結果を出力リレーションとして抽出する例を示します。

CQLの定義例を次に示します。なお,実際のCQLの定義では,列名は半角英数字で指定してください。

 
REGISTER QUERY q
   SELECT s1.銘柄名, s1.値上がり率, s2.銘柄名, s2.GCフラグ
   FROM s1[PARTITION BY s1.銘柄名 ROWS 1],
        s2[PARTITION BY s2.銘柄名 ROWS 1]
   WHERE s1.銘柄名=s2.銘柄名;
 

このCQLを定義した場合の入力リレーションと出力リレーションの例を次の図に示します。

図2-11 結合処理の例

[図データ]

図の横軸は時間軸です。右に行くほど時間が経過しています。t1〜t6は,タプルが到着した時刻を示します。また,入力リレーションのs1のタプルは,「銘柄名,値上がり率」で構成されており,s2のタプルは,「銘柄名,GCフラグ」で構成されています。なお,GCフラグの値は,「DC(Dead Cross)」,「GC(Golden Cross)」のどちらかです。

この例では,銘柄名によって結合処理を実行して出力します。

時刻tAでは,入力リレーションのs1にはタプル「(A社,1.0)」,s2にはタプル「(A社,GC)」があります。これらを銘柄名で結合した結果として,出力リレーションには,タプル「(A社,1.0,A社,GC)」が出力されます。

同様に,時刻tBでは,入力リレーションのs1のタプルとして「(A社,1.2)」「(B社,1.3)」があり,s2のタプルとして「(A社,DC)」「(B社,GC)」があります。これらを銘柄名で結合した結果として,出力リレーションには,タプル「(A社,1.2,A社,DC)」「(B社,1.3,B社,GC)」が出力されます。

このように,特定時刻での結合処理の結果は,入力リレーションのタプルの生存期間に応じたタプルとして,出力リレーションに抽出されます。