Window Function Overview
Timeplus Proton supports three types of time windows:- Tumbling Windows (
tumble): Fixed-size, non-overlapping windows - Hopping Windows (
hop): Fixed-size, overlapping windows with configurable slide - Session Windows (
session): Dynamic windows based on activity gaps
Tumbling Windows
Basic Tumble Syntax
Tumbling windows divide time into fixed, non-overlapping intervals:Simple Tumble Example
Tumble with Grouping
Tumble with Custom Timestamp
Tumble Characteristics
- Fixed window size (e.g., 1 minute, 5 minutes, 1 hour)
- No overlap between windows
- Each event belongs to exactly one window
- Window boundaries align to time intervals
Hopping Windows
Basic Hop Syntax
Hopping windows have fixed size but slide by a smaller interval:hop_interval: How far each window slideswindow_interval: Window size
Simple Hop Example
Hop with Aggregations
Hop with emit_version()
Hop Characteristics
- Fixed window size
- Windows overlap based on hop interval
- Each event can belong to multiple windows
- Useful for sliding calculations (moving averages, etc.)
Session Windows
Basic Session Syntax
Session windows group events separated by gaps of inactivity:Simple Session Example
Session with Activity Analysis
Session Characteristics
- Dynamic window size based on activity
- Windows extend as long as events arrive within gap threshold
- New window starts after inactivity gap
- Must use PARTITION BY to define session scope
Window Columns
All window functions provide:window_start: Window start timestampwindow_end: Window end timestamp
Window Intervals
Supported Interval Types
Short Interval Syntax (Session only)
Timezone Support
Specify timezone for window alignment:Complete Window Examples
Real-time Traffic Analysis
Sliding Average
User Session Analysis
Materialized View with Windows
Multi-Window Analysis
Top-K in Windows
Choosing the Right Window Type
Use Tumbling Windows when...
Use Tumbling Windows when...
- You need non-overlapping time buckets
- Computing periodic metrics (hourly stats, daily summaries)
- Each event should be counted once
- Examples: hourly sales, daily active users, minute-by-minute traffic
Use Hopping Windows when...
Use Hopping Windows when...
- You need overlapping windows for smooth transitions
- Computing moving averages or trends
- Want to detect changes over sliding time periods
- Examples: 5-minute moving average, sliding percentiles
Use Session Windows when...
Use Session Windows when...
- Grouping events by activity sessions
- Activity is bursty with idle periods
- Window size depends on user/device behavior
- Examples: web sessions, IoT device activity, user journeys
Best Practices
Choose appropriate window sizes
Choose appropriate window sizes
Consider:
- Data arrival rate
- Required latency
- Memory constraints
- Business requirements
Always GROUP BY window columns
Always GROUP BY window columns
Include window_start and window_end in GROUP BY:
Use event time, not ingestion time
Use event time, not ingestion time
When available, use event timestamp for accurate windowing:
Consider timezone for daily/hourly windows
Consider timezone for daily/hourly windows
Specify timezone for proper alignment:
Use EMIT STREAM for controlled updates
Use EMIT STREAM for controlled updates
Control when window results are emitted:
Next Steps
Aggregations
Learn more about aggregation functions
Joins
Combine windows with joins
Materialized Views
Materialize windowed aggregations