Class TimeSeriesFilter

All Implemented Interfaces:
Expression, Filter, LogOutputAppendable, LivenessManager, LivenessNode, LivenessReferent, WhereFilter, NotificationQueue.Dependency, Serializable

public class TimeSeriesFilter extends WhereFilterLivenessArtifactImpl implements NotificationQueue.Dependency
TimeSeriesFilter filters a timestamp colum within the table for recent rows.

The filtered column must be an Instant or long containing nanoseconds since the epoch. The computation of recency is delegated to WindowCheck.

When the filter is not inverted, null rows are not accepted and rows that match the window exactly are accepted.

See Also:
  • Constructor Details

    • TimeSeriesFilter

      public TimeSeriesFilter(String columnName, String period)
      Create a TimeSeriesFilter on the given column for the given period
      Parameters:
      columnName - the name of the timestamp column
      period - the duration of the window as parsed by DateTimeUtils.parseDurationNanos(String).
    • TimeSeriesFilter

      public TimeSeriesFilter(String columnName, long periodNanos)
      Create a TimeSeriesFilter on the given column for the given period in nanoseconds.
      Parameters:
      columnName - the name of the timestamp column
      periodNanos - the duration of the window in nanoseconds
  • Method Details

    • newBuilder

      public static TimeSeriesFilter.Builder newBuilder()
      Create a builder for a time series filter.
      Returns:
      a Builder object to configure a TimeSeriesFilter
    • getColumns

      public List<String> getColumns()
      Description copied from interface: WhereFilter
      Get the columns required by this select filter.

      This filter must already be initialized before calling this method.

      Specified by:
      getColumns in interface WhereFilter
      Returns:
      the columns used as input by this select filter.
    • getColumnArrays

      public List<String> getColumnArrays()
      Description copied from interface: WhereFilter
      Get the array columns required by this select filter.

      This filter must already be initialized before calling this method.

      Specified by:
      getColumnArrays in interface WhereFilter
      Returns:
      the columns used as array input by this select filter.
    • init

      public void init(@NotNull @NotNull TableDefinition tableDefinition)
      Description copied from interface: WhereFilter
      Initialize this filter given the table definition. If this filter has already been initialized, this should be a no-op, or optionally validate that the table definition is compatible with previous initialization.
      Specified by:
      init in interface WhereFilter
      Parameters:
      tableDefinition - the definition of the table that will be filtered
    • filter

      @NotNull public @NotNull WritableRowSet filter(@NotNull @NotNull RowSet selection, @NotNull @NotNull RowSet fullSet, @NotNull @NotNull Table table, boolean usePrev)
      Description copied from interface: WhereFilter
      Filter selection to only matching rows.
      Specified by:
      filter in interface WhereFilter
      Parameters:
      selection - the indices that should be filtered. The selection must be a subset of fullSet, and may include rows that the engine determines need not be evaluated to produce the result. Implementations may not mutate or close selection.
      fullSet - the complete RowSet of the table to filter. The fullSet is used for calculating variables like "i" or "ii". Implementations may not mutate or close fullSet.
      table - the table to filter
      usePrev - true if previous values should be used. Implementing previous value filtering is optional, and a WhereFilter.PreviousFilteringNotSupported exception may be thrown. If a PreviousFiltering exception is thrown, then the caller must acquire the PeriodicUpdateGraph lock.
      Returns:
      The subset of selection accepted by this filter; ownership passes to the caller
    • isSimpleFilter

      public boolean isSimpleFilter()
      Specified by:
      isSimpleFilter in interface WhereFilter
      Returns:
      true if this is a filter that does not require any code execution, but rather is handled entirely within the database engine.
    • setRecomputeListener

      public void setRecomputeListener(WhereFilter.RecomputeListener listener)
      Description copied from interface: WhereFilter
      Set the WhereFilter.RecomputeListener that should be notified if results based on this WhereFilter must be recomputed.
      Specified by:
      setRecomputeListener in interface WhereFilter
      Parameters:
      listener - The WhereFilter.RecomputeListener to notify
    • satisfied

      public boolean satisfied(long step)
      Description copied from interface: NotificationQueue.Dependency
      Is this ancestor satisfied? Note that this method must be safe to call on any thread.
      Specified by:
      satisfied in interface NotificationQueue.Dependency
      Parameters:
      step - The step for which we are testing satisfaction
      Returns:
      Whether the dependency is satisfied on step (and will not fire subsequent notifications)
    • getUpdateGraph

      public UpdateGraph getUpdateGraph()
      Specified by:
      getUpdateGraph in interface NotificationQueue.Dependency
      Returns:
      the update graph that this dependency is a part of
    • copy

      public TimeSeriesFilter copy()
      Description copied from interface: WhereFilter
      Create a copy of this WhereFilter.
      Specified by:
      copy in interface WhereFilter
      Returns:
      an independent copy of this WhereFilter.
    • isRefreshing

      public boolean isRefreshing()
      Description copied from interface: WhereFilter
      Is this filter refreshing?
      Specified by:
      isRefreshing in interface WhereFilter
      Returns:
      if this filter is refreshing
    • permitParallelization

      public boolean permitParallelization()
      Specified by:
      permitParallelization in interface WhereFilter
      Returns:
      if this filter can be applied in parallel
    • toString

      public String toString()
      Overrides:
      toString in class ReferenceCounted
    • beginOperation

      public SafeCloseable beginOperation(@NotNull @NotNull Table sourceTable)
      Description copied from interface: WhereFilter
      Perform any operation-level initialization necessary using the Table that will be filtered with this WhereFilter, e.g. gathering data indexes. This method will always be called exactly once, before gathering any dependencies or filtering data.
      Specified by:
      beginOperation in interface WhereFilter
      Parameters:
      sourceTable - The Table that will be filtered with this WhereFilter
      Returns:
      A SafeCloseable that will be closed when the operation is complete, whether successful or not