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)
注意:当查询中未指定窗口化函数时,输入 `PCollections` 的窗口化策略不会被 SQL 查询更改。如果在查询中指定了窗口化函数,则 `PCollection` 的窗口化函数将相应更新,但触发器保持不变。