case class QTreeAggregator[T](percentile: Double, k: Int = QTreeAggregator.DefaultK)(implicit num: Numeric[T]) extends Aggregator[T, QTree[Unit], Intersection[InclusiveLower, InclusiveUpper, Double]] with QTreeAggregatorLike[T] with Product with Serializable
QTree aggregator is an aggregator that can be used to find the approximate percentile bounds. The items that are iterated over to produce this approximation cannot be negative. Returns an Intersection which represents the bounded approximation.
- Alphabetic
- By Inheritance
- QTreeAggregator
- Product
- Equals
- QTreeAggregatorLike
- Aggregator
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new QTreeAggregator(percentile: Double, k: Int = QTreeAggregator.DefaultK)(implicit num: Numeric[T])
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def andThenPresent[D](present2: (Intersection[InclusiveLower, InclusiveUpper, Double]) => D): Aggregator[T, QTree[Unit], D]
Like calling andThen on the present function
Like calling andThen on the present function
- Definition Classes
- Aggregator
- def append(l: QTree[Unit], r: T): QTree[Unit]
- Definition Classes
- Aggregator
- def appendAll(old: QTree[Unit], items: TraversableOnce[T]): QTree[Unit]
- Definition Classes
- Aggregator
- def apply(inputs: TraversableOnce[T]): Intersection[InclusiveLower, InclusiveUpper, Double]
This may error if inputs are empty (for Monoid Aggregators it never will, instead you see present(Monoid.zero[B])
This may error if inputs are empty (for Monoid Aggregators it never will, instead you see present(Monoid.zero[B])
- Definition Classes
- Aggregator
- def applyCumulatively[In <: TraversableOnce[T], Out](inputs: In)(implicit bf: CanBuildFrom[In, Intersection[InclusiveLower, InclusiveUpper, Double], Out]): Out
This returns the cumulative sum of its inputs, in the same order.
This returns the cumulative sum of its inputs, in the same order. If the inputs are empty, the result will be empty too.
- Definition Classes
- Aggregator
- def applyOption(inputs: TraversableOnce[T]): Option[Intersection[InclusiveLower, InclusiveUpper, Double]]
This returns None if the inputs are empty
This returns None if the inputs are empty
- Definition Classes
- Aggregator
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def composePrepare[A1](prepare2: (A1) => T): Aggregator[A1, QTree[Unit], Intersection[InclusiveLower, InclusiveUpper, Double]]
Like calling compose on the prepare function
Like calling compose on the prepare function
- Definition Classes
- Aggregator
- def cumulativeIterator(inputs: Iterator[T]): Iterator[Intersection[InclusiveLower, InclusiveUpper, Double]]
This returns the cumulative sum of its inputs, in the same order.
This returns the cumulative sum of its inputs, in the same order. If the inputs are empty, the result will be empty too.
- Definition Classes
- Aggregator
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def join[A2 <: T, B2, C2](that: Aggregator[A2, B2, C2]): Aggregator[A2, (QTree[Unit], B2), (Intersection[InclusiveLower, InclusiveUpper, Double], C2)]
This allows you to run two aggregators on the same data with a single pass
This allows you to run two aggregators on the same data with a single pass
- Definition Classes
- Aggregator
- val k: Int
This is the depth parameter for the QTreeSemigroup
This is the depth parameter for the QTreeSemigroup
- Definition Classes
- QTreeAggregator → QTreeAggregatorLike
- def level: Int
We convert T to a Double, then the Double is converted to a Long by using a 2^level bucket size.
We convert T to a Double, then the Double is converted to a Long by using a 2^level bucket size.
- Definition Classes
- QTreeAggregatorLike
- def lift: MonoidAggregator[T, Option[QTree[Unit]], Option[Intersection[InclusiveLower, InclusiveUpper, Double]]]
- Definition Classes
- Aggregator
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- implicit val num: Numeric[T]
- Definition Classes
- QTreeAggregator → QTreeAggregatorLike
- val percentile: Double
- Definition Classes
- QTreeAggregator → QTreeAggregatorLike
- def prepare(input: T): QTree[Unit]
- Definition Classes
- QTreeAggregatorLike
- def present(qt: QTree[Unit]): Intersection[InclusiveLower, InclusiveUpper, Double]
- Definition Classes
- QTreeAggregator → Aggregator
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- def reduce(items: TraversableOnce[QTree[Unit]]): QTree[Unit]
This may error if items is empty.
This may error if items is empty. To be safe you might use reduceOption if you don't know that items is non-empty
- Definition Classes
- Aggregator
- def reduce(l: QTree[Unit], r: QTree[Unit]): QTree[Unit]
combine two inner values
combine two inner values
- Definition Classes
- Aggregator
- def reduceOption(items: TraversableOnce[QTree[Unit]]): Option[QTree[Unit]]
This is the safe version of the above.
This is the safe version of the above. If the input in empty, return None, else reduce the items
- Definition Classes
- Aggregator
- def semigroup: QTreeSemigroup[Unit]
- Definition Classes
- QTreeAggregatorLike
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toFold: Fold[T, Option[Intersection[InclusiveLower, InclusiveUpper, Double]]]
An Aggregator can be converted to a Fold, but not vice-versa Note, a Fold is more constrained so only do this if you require joining a Fold with an Aggregator to produce a Fold
An Aggregator can be converted to a Fold, but not vice-versa Note, a Fold is more constrained so only do this if you require joining a Fold with an Aggregator to produce a Fold
- Definition Classes
- Aggregator
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def zip[A2, B2, C2](ag2: Aggregator[A2, B2, C2]): Aggregator[(T, A2), (QTree[Unit], B2), (Intersection[InclusiveLower, InclusiveUpper, Double], C2)]
This allows you to join two aggregators into one that takes a tuple input, which in turn allows you to chain .composePrepare onto the result if you have an initial input that has to be prepared differently for each of the joined aggregators.
This allows you to join two aggregators into one that takes a tuple input, which in turn allows you to chain .composePrepare onto the result if you have an initial input that has to be prepared differently for each of the joined aggregators.
The law here is: ag1.zip(ag2).apply(as.zip(bs)) == (ag1(as), ag2(bs))
- Definition Classes
- Aggregator