t

io.sqooba.oss.timeseries.window

ReversibleAggregator

sealed trait ReversibleAggregator[T, A] extends Aggregator[T, A]

Extension to the Aggregator that also supports removing entries from the aggregated value. Assuming we want to aggregate the content of a window, and to do so for each different window returned by WindowSlider, many iterations will be required.

Depending on the aggregation function, this is however not required: For simple cases like addition or multiplication and any situation where the contributions of a single entry to the aggregated value may be reversed, we can compute an aggregated value for each window in linear time.

The reversible aggregator will be applied sequentially, so it may keep track of any state from one addition or removal to the next.

Some aggregations depend on the duration of the entries like integration or averaging, others like min max don't. To keep those types of aggregations well separated, implementations need to extend either the time-aware or the time-unaware subtrait. This allows us to use different windowing functions for the two types.

T

the type of the entries being aggregated over

A

the type of the aggregated value

Linear Supertypes
Aggregator[T, A], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ReversibleAggregator
  2. Aggregator
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def addEntry(e: TSEntry[T]): Unit

    Update the internal aggregated value according to the entry that is about to be added to the window.

    Update the internal aggregated value according to the entry that is about to be added to the window.

    e

    the entry that is about to enter the window

    Definition Classes
    Aggregator
  2. abstract def currentValue: Option[A]

    returns

    the current aggregated value or None

    Definition Classes
    Aggregator
  3. abstract def dropEntry(entry: TSEntry[T]): Unit

    Updates the aggregated value according to the fact that this entry is being removed.

    Updates the aggregated value according to the fact that this entry is being removed.

    entry

    to remove from the head of the window

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def addAndDrop(add: TSEntry[T], remove: TSEntry[T]): Unit

    Combine the addition and the removal of entries from the aggregated value.

    Combine the addition and the removal of entries from the aggregated value.

    add

    the entry that will be added at the tail

    remove

    the entry that will be removed at the head

  5. def addAndDrop(add: TSEntry[T], currentWindow: Queue[TSEntry[T]]): Unit

    Combine the addition and the removal of entries from the aggregated value.

    Combine the addition and the removal of entries from the aggregated value.

    add

    the value that will be added

    currentWindow

    the current window, from which we will drop the first entry. Note that it does not yet contain 'add'

  6. def addEntry(e: TSEntry[T], currentWindow: Queue[TSEntry[T]]): Unit

    Update the internal aggregated value according to the entry that is about to be added to the window.

    Update the internal aggregated value according to the entry that is about to be added to the window.

    e

    the entry that is about to enter the window

    currentWindow

    the current content of the window: it does not include 'e' at this point.

    Definition Classes
    Aggregator
    Note

    By default this ignores the currentWindow and passes the entry to the function that only takes the entry. If you want to use the entire window in the aggregaton you can override this method.

  7. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  8. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  9. def dropHead(currentWindow: Queue[TSEntry[T]]): Unit

    Updates the aggregated value according to the fact that the head of the currentWindow is being removed.

    Updates the aggregated value according to the fact that the head of the currentWindow is being removed.

    currentWindow

    the current content of the window. It still contains the entry that has to be removed

  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  13. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  20. def toString(): String
    Definition Classes
    AnyRef → Any
  21. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  22. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  23. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from Aggregator[T, A]

Inherited from AnyRef

Inherited from Any

Ungrouped