Four ways to bound state
Execution sketchThe same event stream, four window semantics
fixedTumbling
rollingSliding
overlappingHopping
activitySession
| Window | Membership | Best for |
|---|---|---|
| Tumbling | Non-overlapping fixed intervals | Periodic summaries and buckets |
| Sliding | A continuously moving duration | Rolling indicators |
| Hopping | Fixed intervals emitted at a smaller hop | Overlapping periodic analysis |
| Session | Activity separated by an inactivity timeout | Bursts, visits, and operational sessions |
Fixed and overlapping windows
TumblingChronusQL
GROUP BY driver,
TumblingWindow(Duration(second, 30))SlidingChronusQL
GROUP BY driver,
SlidingWindow(Duration(second, 30))HoppingChronusQL
GROUP BY driver,
HoppingWindow(Duration(second, 30), Hop(second, 5))An optional Offset(unit, value) aligns supported aggregate windows away from the default boundary. Hopping windows use Hop(unit, value) for the advance interval.
Session windows
Independent sessions per driverChronusQL
SELECT driver,
Window.EndTime AS session_end,
COUNT(*) AS event_count
INTO output
FROM laps TIMESTAMP BY ts
GROUP BY driver,
SessionWindow(Duration(minute, 2, 60))- The first size is the inactivity timeout.
- The second size is the maximum session duration checkpoint.
- Normal grouping keys partition sessions independently.
- Session results are timestamped at the logical session end.