ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド
名前の修飾は,「データ識別子.列名」のように,ピリオド(.)によってデータ識別子と列名を連結して,名前を一意にするときに使用します。なお,データ識別子と列名を連結した名前の指定方法を,列指定といいます。
データ識別子指定とは,一つのCQL文中に二つ以上のデータ識別子を指定する場合に,指定する列名がどのストリーム,リレーションまたは相関名に対応するかを一意にするための修飾子を使用した指定方法です。
次の指定形式に示すように,修飾子としてストリーム名,リレーション名,または相関名を指定します。
ストリーム名およびリレーション名については,「4.4.13 リレーション参照」を参照してください。また,相関名については,「4.4.11 選択式」および「4.4.13 リレーション参照」を参照してください。
列指定とは,データ識別子で修飾された列名のことです。
複数のデータ識別子を指定した検索(二つ以上のデータ識別子を結合した検索)をする場合に,検索対象の複数のデータ識別子に同じ名称の列名があるとき,列指定によって指定した列がどのデータ識別子に対応する列なのかを明確にします。
指定形式を次に示します。
データ識別子で列名を修飾する場合,指定するデータ識別子が有効な範囲内の列名を指定する必要があります。データ識別子の有効範囲は,FROM句に指定したリレーション参照のリレーション,ストリーム,または相関名で定義されている列名です。定義されていない列名を指定した場合,エラーとなります。
問い合わせの結果として取得されるストリームおよびリレーションの名前には,問い合わせを定義しているクエリ名と同じ名前が付けられます。
列名は,次のどちらかに含まれる必要があります。
ストリームおよびリレーションの列名は,次の規則に従って問い合わせ結果として取得されます。
REGISTER QUERY q1 SELECT s1.c1 FROM s1[NOW] … UNION SELECT s2.d1 FROM s2[NOW] … UNION SELECT s3.e1 FROM s3[NOW] …; REGISTER QUERY q2 SELECT q1.c1 FROM q1 …;
REGISTER QUERY q1 SELECT s1.c1, s2.d1, s3.e1 FROM s1[NOW], s2[NOW], s3[NOW]; REGISTER QUERY q2 SELECT * FROM q1;
ストリーム句については,「4.4.2 ストリーム句」を参照してください。リレーション式については,「4.4.3 リレーション式」を参照してください。また,ストリーム間演算関数については,「4.4.24 ストリーム間演算関数」を参照してください。
列指定の修飾子となる識別子を範囲変数といいます。範囲変数は,有効範囲と名称を持ちます。また,範囲変数で指定されたデータ識別子は,表識別子ともいいます。
相関名は範囲変数です。相関名が指定された場合,相関名で指定された元のデータ識別子は,列名の有効範囲ではなくなります。
リレーション参照,選択式に相関名を指定した場合の列名の有効範囲について,例を次に示します。
REGISTER QUERY q1 SELECT a1.a FROM s1[NOW] AS a1 WHERE a1.a > 1;
REGISTER QUERY q2 SELECT s1.a FROM s1[NOW] AS a1 WHERE s1.a > 1;
REGISTER QUERY q1 SELECT s1.a AS a1 FROM s1[NOW]; REGISTER QUERY q2 SELECT a1 FROM q1 WHERE a1 > 1;
REGISTER QUERY q1 SELECT s1.a AS a1 FROM s1[NOW]; REGISTER QUERY q3 SELECT q1.a FROM q1 WHERE q1.a > 1; REGISTER QUERY q4 SELECT a FROM q1 WHERE a > 1;
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.