すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:LAST_VALUE

最終更新日:Mar 26, 2026

LAST_VALUE は、OVER ウィンドウ内のデータストリームで、最後の NULL でない値を返します。新しいレコードが到着するたびに、各パーティションの最新の有効な値を追跡するために使用します。

制限事項

Ververica Runtime (VVR) 3.0.0 以降を使用する Realtime Compute for Apache Flink でのみサポートされています。

構文

T LAST_VALUE(T value)
T LAST_VALUE(T value, BIGINT order)

入力パラメーター

パラメーターデータの型説明
value任意のデータの型評価する値。NULL 値はスキップされます。
orderBIGINTどのレコードを最後と見なすかを決定する順序付けキー。order 値が最大の NULL でないレコードが返されます。
重要

すべての入力パラメーターは同じデータの型である必要があります。

戻り値

value と同じデータの型を返します。

注意事項

order パラメーターの使用

order 値を指定すると、LAST_VALUE は処理順序に依存するのではなく、order 値が最大の NULL でないレコードを選択します。

テストデータ (テーブル T1)

a (BIGINT)b (INT)c (VARCHAR)
11Hello
22Hello
33Hello
44Hello
55Hello
66Hello
77NULL
87Hello World
98Hello World
1020Hello World

テストステートメント

SELECT c, LAST_VALUE(b)
OVER (PARTITION BY c ORDER BY PROCTIME() RANGE UNBOUNDED PRECEDING) AS var1
FROM T1;

結果

c (VARCHAR)var1 (INT)
Hello1
Hello2
Hello3
Hello4
Hello5
Hello6
NULL7
Hello World7
Hello World8
Hello World20

c 列の NULL 行は、そのパーティションに 1 行 (b = 7) しか含まれていないため、var1 = 7 を返します。Hello World パーティションの場合、ウィンドウフレームが RANGE UNBOUNDED PRECEDING であるため、各行はその行までの最後の NULL でない b 値 (7、次に 8、次に 20) を反映します。