public final class TimeWindows extends Windows<org.apache.kafka.streams.kstream.internals.TimeWindow>
The semantics of time-based aggregation windows are: Every T1 (advance) milliseconds, compute the aggregate total for T2 (size) milliseconds.
advance < size
a hopping windows is defined:advance == size
a tumbling window is defined:TimeWindow
s are aligned to the epoch.
Aligned to the epoch means, that the first window starts at timestamp zero.
For example, hopping windows with size of 5000ms and advance of 3000ms, have window boundaries
[0;5000),[3000;8000),... and not [1000;6000),[4000;9000),... or even something "random" like [1452;6452),[4452;9452),...
For time semantics, see TimestampExtractor
.
Modifier and Type | Field and Description |
---|---|
long |
advanceMs
The size of the window's advance interval in milliseconds, i.e., by how much a window moves forward relative to
the previous one.
|
long |
sizeMs
The size of the windows in milliseconds.
|
Modifier and Type | Method and Description |
---|---|
TimeWindows |
advanceBy(Duration advance)
Return a window definition with the original size, but advance ("hop") the window by the given interval, which
specifies by how much a window moves forward relative to the previous one.
|
boolean |
equals(Object o) |
TimeWindows |
grace(Duration afterWindowEnd)
Deprecated.
since 3.0. Use
ofSizeAndGrace(Duration, Duration) instead |
long |
gracePeriodMs()
Return the window grace period (the time to admit
out-of-order events after the end of the window.)
Delay is defined as (stream_time - record_timestamp).
|
int |
hashCode() |
static TimeWindows |
of(Duration size)
Deprecated.
since 3.0. Use
ofSizeWithNoGrace(Duration) } instead |
static TimeWindows |
ofSizeAndGrace(Duration size,
Duration afterWindowEnd)
Return a window definition with the given window size, and with the advance interval being equal to the window
size.
|
static TimeWindows |
ofSizeWithNoGrace(Duration size)
Return a window definition with the given window size, and with the advance interval being equal to the window
size.
|
long |
size()
Return the size of the specified windows in milliseconds.
|
String |
toString() |
Map<Long,org.apache.kafka.streams.kstream.internals.TimeWindow> |
windowsFor(long timestamp)
Create all windows that contain the provided timestamp, indexed by non-negative window start timestamps.
|
public final long sizeMs
public final long advanceMs
public static TimeWindows ofSizeWithNoGrace(Duration size) throws IllegalArgumentException
[N * size, N * size + size)
.
This provides the semantics of tumbling windows, which are fixed-sized, gap-less, non-overlapping windows.
Tumbling windows are a special case of hopping windows with advance == size
.
CAUTION: Using this method implicitly sets the grace period to zero, which means that any out-of-order records arriving after the window ends are considered late and will be dropped.
size
- The size of the windowIllegalArgumentException
- if the specified window size is zero or negative or can't be represented as long milliseconds
public static TimeWindows ofSizeAndGrace(Duration size, Duration afterWindowEnd) throws IllegalArgumentException
[N * size, N * size + size)
.
This provides the semantics of tumbling windows, which are fixed-sized, gap-less, non-overlapping windows.
Tumbling windows are a special case of hopping windows with advance == size
.
Using this method explicitly sets the grace period to the duration specified by afterWindowEnd
, which
means that only out-of-order records arriving more than the grace period after the window end will be dropped.
The window close, after which any incoming records are considered late and will be rejected, is defined as
windowEnd + afterWindowEnd
size
- The size of the window. Must be larger than zeroafterWindowEnd
- The grace period to admit out-of-order events to a window. Must be non-negative.IllegalArgumentException
- if afterWindowEnd
is negative or can't be represented as long milliseconds
@Deprecated public static TimeWindows of(Duration size) throws IllegalArgumentException
ofSizeWithNoGrace(Duration)
} instead[N * size, N * size + size)
.
This provides the semantics of tumbling windows, which are fixed-sized, gap-less, non-overlapping windows.
Tumbling windows are a special case of hopping windows with advance == size
.
size
- The size of the windowsize
)IllegalArgumentException
- if the specified window size is zero or negative or can't be represented as long milliseconds
public TimeWindows advanceBy(Duration advance)
[N * advance, N * advance + size)
.
This provides the semantics of hopping windows, which are fixed-sized, overlapping windows.
advance
- The advance interval ("hop") of the window, with the requirement that 0 < advance.toMillis() <= sizeMs
.IllegalArgumentException
- if the advance interval is negative, zero, or larger than the window sizepublic Map<Long,org.apache.kafka.streams.kstream.internals.TimeWindow> windowsFor(long timestamp)
Windows
windowsFor
in class Windows<org.apache.kafka.streams.kstream.internals.TimeWindow>
timestamp
- the timestamp window should get created forwindowStartTimestamp -> Window
entriespublic long size()
Windows
@Deprecated public TimeWindows grace(Duration afterWindowEnd) throws IllegalArgumentException
ofSizeAndGrace(Duration, Duration)
insteadmillisAfterWindowEnd
after the end of its window.
Delay is defined as (stream_time - record_timestamp).
afterWindowEnd
- The grace period to admit out-of-order events to a window.IllegalArgumentException
- if afterWindowEnd
is negative or can't be represented as long milliseconds
IllegalStateException
- if grace(Duration)
is called after ofSizeAndGrace(Duration, Duration)
or ofSizeWithNoGrace(Duration)
public long gracePeriodMs()
Windows
gracePeriodMs
in class Windows<org.apache.kafka.streams.kstream.internals.TimeWindow>