Beam SQL 擴展:視窗化與觸發
您可以使用兩種方式來使用 Beam 的視窗化語義
- 您可以在將輸入
PCollections
傳遞給BeamSql
轉換之前,設定其上的視窗化 - 您可以在您的視窗化查詢中使用視窗化擴展,這將覆寫您的輸入
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
或滑動視窗。範例說明如何定義每 30 分鐘滑動一次、持續時間為 1 小時的滑動視窗
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
的視窗化函數會相應更新,但觸發保持不變。