Class SlidingWindowExtensions
- Namespace
- Scaleout.Streaming.TimeWindowing.Linq
- Assembly
- Scaleout.Streaming.TimeWindowing.dll
Provides extension method for sliding window transformation of a collection.
public static class SlidingWindowExtensions
- Inheritance
-
SlidingWindowExtensions
- Inherited Members
Methods
ToSlidingWindows<TSource>(IEnumerable<TSource>, Func<TSource, DateTime>, DateTime, DateTime, TimeSpan, TimeSpan)
Transforms a collection into an enumerable collection of sliding windows. The source collection must be sorted chronologically.
public static IEnumerable<ITimeWindow<TSource>> ToSlidingWindows<TSource>(this IEnumerable<TSource> source, Func<TSource, DateTime> timestampSelector, DateTime startTime, DateTime endTime, TimeSpan windowDuration, TimeSpan every)
Parameters
sourceIEnumerable<TSource>The sequence of elements to transform.
timestampSelectorFunc<TSource, DateTime>A function to extract a timestamp from an element.
startTimeDateTimeStart time (inclusive) of the first sliding window.
endTimeDateTimeEnd time (exclusive) for the last of sliding window(s).
windowDurationTimeSpanDuration of each time window. This is a maximum value that will be shortened for the last window(s) in the returned sequence (see remarks).
everyTimeSpanThe period of time between the start of each sliding window.
Returns
- IEnumerable<ITimeWindow<TSource>>
An enumerable set of ITimeWindow<TElement> collections.
Type Parameters
TSourceThe type of objects in the source collection.
Remarks
The method returns a sequence of overlapping ITimeWindow<TElement> elements, where each window is an enumerable collection of elements from the source collection whose timestamp falls within its specified range. The StartTime is inclusive and the EndTime is exclusive.
The last sliding windows returned by this method may have a shorter duration than what is specified
by the windowDuration argument. This happens when the duration would cause
the window to extend beyond the specified endTime. These trailing windows can be skipped
by using a Linq Where() operation on the returned sequence to filter out windows with short durations.