Beam SQL拡張機能:ウィンドウ処理とトリガー
Beamのウィンドウ処理セマンティクスは2つの方法で使用できます。
BeamSql
変換に渡す前に、入力PCollections
でウィンドウ処理を設定できます。- ウィンドウ処理クエリでウィンドウ処理拡張機能を使用できます。これは、入力
PCollections
のウィンドウ処理を上書きします。
トリガーは、入力PCollections
に設定することでのみ使用できます。トリガーを指定するためのSQL拡張機能はありません。
このセクションでは、SQL拡張機能を使用してウィンドウ処理を直接適用する方法について説明します。
Beam SQLは、GROUP BY
句で指定されたウィンドウ処理関数をサポートしています。この場合、TIMESTAMP
フィールドが必要です。これは、行のイベントタイムスタンプとして使用されます。
サポートされているウィンドウ処理関数
TUMBLE
、または固定ウィンドウ。1時間の長さの固定ウィンドウを定義する方法の例
SELECT f_int, COUNT(*)
FROM PCOLLECTION
GROUP BY
f_int,
TUMBLE(f_timestamp, INTERVAL '1' HOUR)
HOP
、またはスライドウィンドウ。1時間の長さで30分ごとにスライドウィンドウを定義する方法の例
SELECT f_int, COUNT(*)
FROM PCOLLECTION
GROUP BY
f_int,
HOP(f_timestamp, INTERVAL '30' MINUTE, INTERVAL '1' HOUR)
SESSION
、セッションウィンドウ。5分のギャップ時間を持つセッションウィンドウを定義する方法の例
SELECT f_int, COUNT(*)
FROM PCOLLECTION
GROUP BY
f_int,
SESSION(f_timestamp, INTERVAL '5' MINUTE)
注記:クエリにウィンドウ処理関数を指定しない場合、SQLクエリによって入力PCollections
のウィンドウ処理戦略は変更されません。クエリにウィンドウ処理関数を指定した場合、PCollection
のウィンドウ処理関数はそれに応じて更新されますが、トリガーは変更されません。