Expand description
Streaming window table-valued functions: TUMBLE, HOP, SESSION.
Rewrites Flink-SQL-style window TVF syntax into standard SQL that uses
the existing tumble_start/tumble_end/hop_start/hop_end/session_start/
session_end scalar UDFs registered by window_functions.rs.
§Syntax (FROM clause)
-- Tumbling window: each event appears in exactly one window
SELECT key, window_start, window_end, COUNT(*)
FROM TUMBLE(TABLE events, DESCRIPTOR(ts), 60000)
GROUP BY key, window_start, window_end
-- Hopping / sliding window: each event appears in (size/slide) windows
SELECT key, window_start, window_end, COUNT(*)
FROM HOP(TABLE events, DESCRIPTOR(ts), 30000, 60000)
GROUP BY key, window_start, window_end
-- Session window: gaps between events delimit window boundaries
SELECT key, window_start, window_end, COUNT(*)
FROM SESSION(TABLE events, DESCRIPTOR(ts), 5000)
GROUP BY key, window_start, window_end§Interval expressions
The size / slide / gap argument can be:
- An integer literal (milliseconds):
60000 - A SQL interval string:
'1 minute','30 seconds','1 hour'→ converted to ms
§Rewrite output
-- TUMBLE → subquery with window_start / window_end columns:
SELECT key, window_start, window_end, COUNT(*)
FROM (
SELECT *, tumble_start(ts, 60000) AS window_start,
tumble_end(ts, 60000) AS window_end
FROM events
) AS _tvf_window
GROUP BY key, window_start, window_endEnums§
- Window
Tvf - Parsed form of a window TVF call.
Functions§
- find_
window_ tvf - Scan
sqlfor the first occurrence of a window TVF in a FROM clause and return(pre, tvf, post)wherepre + rewrite(tvf) + postproduces the final SQL. ReturnsNoneif no TVF is found. - rewrite_
window_ tvfs - Rewrite all window TVF calls in
sqlto subquery form. Iterates until no more TVFs are found (handles multiple TVFs in one query).