2.2.1 定義系CQLによるストリームおよびクエリの定義

ストリームおよびクエリの定義に使用するCQLを定義系CQLといいます。定義系CQLには,次の2種類があります。

以降で,それぞれの句の指定方法について説明します。

<この項の構成>
(1) ストリームの定義(REGISTER STREAM句)
(2) クエリの定義(REGISTER QUERY句)

(1) ストリームの定義(REGISTER STREAM句)

ストリームの定義には,定義系CQLのREGISTER STREAM句を使用します。

REGISTER STREAM句には,ストリームの名称(入力ストリームの名称),スキーマ指定文字列(ストリームに従って流れるストリームデータの形式)を指定します。REGISTER STREAM句の指定方法を次に示します。

REGISTER STREAM ストリームの名称
(スキーマ指定文字列);

例として,気温分析システムのストリームを定義するCQL文を次に示します。

REGISTER STREAM temperature_stream
(observation_time TIME, id INTEGER, temperature INTEGER);

ストリームの名称には,「temperature_stream」を指定しています。また,「observation_time」(観測時刻),「id」(観測所のID),および「temperature」(気温)のデータを,それぞれ「TIME型」,「INTEGER型」,および「INTEGER型」のデータ型で指定しています。

(2) クエリの定義(REGISTER QUERY句)

クエリの定義には,定義系CQLのREGISTER QUERY句を使用します。REGISTER QUERY句には,クエリの名称,ストリーム句,SELECT句,FROM句,WHERE句の順序で記述します。なお,ここで指定するクエリの名称は,クエリによって処理されたストリームデータが流れるストリーム(出力ストリーム)の名称になります。

REGISTER QUERY句中のストリーム句,SELECT句,FROM句,およびWHERE句のCQL文の句とクエリの動作は,次の表のように対応します。

表2-1 CQL文の句とクエリの動作の対応

CQL文の句クエリの動作
ストリーム句ストリーム化演算の動作を指定
SELECT句,WHERE句関係演算の動作を指定
FROM句ウィンドウ演算の動作を指定

REGISTER QUERY句の指定方法を次に示します。

REGISTER QUERY クエリの名称
ストリーム句 (
SELECT句
FROM句
WHERE句);

REGISTER QUERY句の指定内容について説明します。

ストリーム句
ストリームデータの出力方法を指定します。目的に応じて,ISTREAM句,DSTREAM句,RSTREAM句のどれかを指定します。これらの句については,「2.2.2(3) ストリーム化演算(データの処理結果の出力)」を参照してください。
SELECT句
演算処理の対象となったタプルから抽出するデータを指定します。抽出するデータは,REGISTER STREAM句のスキーマ指定文字列で指定したデータの名称で指定します。なお,演算処理の対象とするタプルは,WHERE句で指定します。
FROM句
クエリによる処理の対象となるストリームの名称と,ウィンドウを指定します。ウィンドウには,目的に対応した,ROWSウィンドウ,RANGEウィンドウ,NOWウィンドウ,PARTITION BYウィンドウの4種類があります。
ストリームデータは,REGISTER STREAM句で指定した名称で指定します。ウィンドウは,ストリームの名称に続けて,半角角括弧([ ])で囲んで指定します。ウィンドウについては,「2.2.2(1) ウィンドウ演算(分析対象データの抽出)」を参照してください。
クエリによる処理の対象がリレーションの場合は,リレーションの名称を指定します。
WHERE句
WHERE句には,ウィンドウで抽出されたタプルから,演算処理の対象を選択するための選択条件を指定します。

例として,「(1) ストリームの定義(REGISTER STREAM句)」で説明した気温分析システムに続けてクエリを定義します。

REGISTER STREAM temperature_stream
(observation_time TIME, id INTEGER, temperature INTEGER);
REGISTER QUERY sensor_filter
ISTREAM (
SELECT id, temperature
FROM temperature_stream[ROWS 3]
WHERE id = 1);

REGISTER QUERY句の指定内容について説明します。

なお,REGISTER QUERY句には,ここで説明した以外の句も指定できます。REGISTER QUERY句に指定できる句については,マニュアル「uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド」を参照してください。