Class SlidingWindows

  • All Implemented Interfaces:
    java.io.Serializable, HasDisplayData

    public class SlidingWindows
    extends NonMergingWindowFn<java.lang.Object,​IntervalWindow>
    A WindowFn that windows values into possibly overlapping fixed-size timestamp-based windows.

    For example, in order to window data into 10 minute windows that update every minute:

    
     PCollection<Integer> items = ...;
     PCollection<Integer> windowedItems = items.apply(
       Window.<Integer>into(SlidingWindows.of(Duration.standardMinutes(10))));
     
    See Also:
    Serialized Form
    • Method Detail

      • of

        public static SlidingWindows of​(org.joda.time.Duration size)
        Assigns timestamps into half-open intervals of the form [N * period, N * period + size), where 0 is the epoch.

        If every(org.joda.time.Duration) is not called, the period defaults to the largest time unit smaller than the given duration. For example, specifying a size of 5 seconds will result in a default period of 1 second.

      • every

        public SlidingWindows every​(org.joda.time.Duration period)
        Returns a new SlidingWindows with the original size, that assigns timestamps into half-open intervals of the form [N * period, N * period + size), where 0 is the epoch.
      • withOffset

        public SlidingWindows withOffset​(org.joda.time.Duration offset)
        Assigns timestamps into half-open intervals of the form [N * period + offset, N * period + offset + size).
        Throws:
        java.lang.IllegalArgumentException - if offset is not in [0, period)
      • assignWindows

        public java.util.Collection<IntervalWindow> assignWindows​(org.joda.time.Instant timestamp)
      • isCompatible

        public boolean isCompatible​(WindowFn<?,​?> other)
        Description copied from class: WindowFn
        Returns whether this performs the same merging as the given WindowFn.
        Specified by:
        isCompatible in class WindowFn<java.lang.Object,​IntervalWindow>
      • assignsToOneWindow

        public boolean assignsToOneWindow()
        Description copied from class: WindowFn
        Returns true if this WindowFn always assigns an element to exactly one window.

        If this varies per-element, or cannot be determined, conservatively return false.

        By default, returns false.

        Overrides:
        assignsToOneWindow in class WindowFn<java.lang.Object,​IntervalWindow>
      • populateDisplayData

        public void populateDisplayData​(DisplayData.Builder builder)
        Description copied from class: WindowFn
        Register display data for the given transform or component.

        populateDisplayData(DisplayData.Builder) is invoked by Pipeline runners to collect display data via DisplayData.from(HasDisplayData). Implementations may call super.populateDisplayData(builder) in order to register display data in the current namespace, but should otherwise use subcomponent.populateDisplayData(builder) to use the namespace of the subcomponent.

        By default, does not register any display data. Implementors may override this method to provide their own display data.

        Specified by:
        populateDisplayData in interface HasDisplayData
        Overrides:
        populateDisplayData in class WindowFn<java.lang.Object,​IntervalWindow>
        Parameters:
        builder - The builder to populate with display data.
        See Also:
        HasDisplayData
      • getPeriod

        public org.joda.time.Duration getPeriod()
      • getSize

        public org.joda.time.Duration getSize()
      • getOffset

        public org.joda.time.Duration getOffset()
      • equals

        public boolean equals​(@Nullable java.lang.Object object)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object