擬似列はストリーム要素と同じように動作しますが、実際にはタプルの一部ではありません。
擬似列からの選択はできますが、値の変更はできません。擬似列は引数のない関数にも似ています (節 1.1.9「関数」を参照)。
Oracle CQL では、以下の擬似列がサポートされています。
ELEMENT_TIME
擬似列は、指定のストリーム要素に関連付けられたタイムスタンプ値を java.lang.Math.Bigint(Long)
として返します。
構文については、pseudo_column::= を参照してください。
例 3-1 は、select 文で ELEMENT_TIME
擬似列を使用する方法を示します。ストリーム S1
にはスキーマ (c1 integer)
があります。例 3-2 に示す入力ストリームがある場合、例 3-3 に示す結果がこのクエリで返されます。関数 to_timestamp
を使用して Long
値をタイムスタンプ値に変換しています。
例 3-1 Select 文の ELEMENT_TIME 擬似列
<query id="q4"><![CDATA[ select c1, to_timestamp(element_time) from S1[range 10000000 nanoseconds slide 10000000 nanoseconds] ]]></query>
例 3-3 出力リレーション
Timestamp Tuple Kind Tuple 8000 + 80,12/31/1969 17:00:08 8010 - 80,12/31/1969 17:00:08 9000 + 90,12/31/1969 17:00:09 9010 - 90,12/31/1969 17:00:09 13000 + 130,12/31/1969 17:00:13 13010 - 130,12/31/1969 17:00:13 15000 + 150,12/31/1969 17:00:15 15010 - 150,12/31/1969 17:00:15 23000 + 230,12/31/1969 17:00:23 23010 - 230,12/31/1969 17:00:23 25000 + 250,12/31/1969 17:00:25 25010 - 250,12/31/1969 17:00:25
例 3-4 は、pattern クエリで ELEMENT_TIME
擬似列を使用する方法を示します。Nth.status
の値が >= F.status
であり、そのタプルの Nth.ELEMENT_TIME
値と最後に F
に一致したタプルとの差が java.lang.Math.Bigint(Long)
として指定された間隔に満たない場合、タプルまたはイベントは相関変数 Nth
に一致します。