[−][src]Trait differential_dataflow::operators::threshold::ThresholdTotal
Extension trait for the distinct
differential dataflow method.
Required methods
fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2> where
R2: Semigroup,
F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static,
R2: Semigroup,
F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static,
Reduces the collection to one occurrence of each distinct element.
Provided methods
fn threshold_total<R2: Abelian, F: FnMut(&K, &R) -> R2 + 'static>(
&self,
thresh: F
) -> Collection<G, K, R2>
&self,
thresh: F
) -> Collection<G, K, R2>
Reduces the collection to one occurrence of each distinct element.
Examples
extern crate timely; extern crate differential_dataflow; use differential_dataflow::input::Input; use differential_dataflow::operators::ThresholdTotal; fn main() { ::timely::example(|scope| { // report the number of occurrences of each key scope.new_collection_from(1 .. 10).1 .map(|x| x / 3) .threshold_total(|_,c| c % 2); }); }
fn distinct_total(&self) -> Collection<G, K, isize>
Reduces the collection to one occurrence of each distinct element.
This reduction only tests whether the weight associated with a record is non-zero, and otherwise
ignores its specific value. To take more general actions based on the accumulated weight, consider
the threshold
method.
Examples
extern crate timely; extern crate differential_dataflow; use differential_dataflow::input::Input; use differential_dataflow::operators::ThresholdTotal; fn main() { ::timely::example(|scope| { // report the number of occurrences of each key scope.new_collection_from(1 .. 10).1 .map(|x| x / 3) .distinct_total(); }); }
fn distinct_total_core<R2: Abelian + From<i8>>(&self) -> Collection<G, K, R2>
Distinct for general integer differences.
This method allows distinct
to produce collections whose difference
type is something other than an isize
integer, for example perhaps an
i32
.
Implementors
impl<G: Scope, K: ExchangeData + Hashable, R: ExchangeData + Semigroup> ThresholdTotal<G, K, R> for Collection<G, K, R> where
G::Timestamp: TotalOrder + Lattice + Ord,
[src]
G::Timestamp: TotalOrder + Lattice + Ord,
fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2> where
R2: Semigroup,
F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static,
[src]
R2: Semigroup,
F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static,
impl<G: Scope, T1> ThresholdTotal<G, <T1 as TraceReader>::Key, <T1 as TraceReader>::R> for Arranged<G, T1> where
G::Timestamp: TotalOrder + Lattice + Ord,
T1: TraceReader<Val = (), Time = G::Timestamp> + Clone + 'static,
T1::Key: ExchangeData,
T1::R: ExchangeData + Semigroup,
T1::Batch: BatchReader<T1::Key, (), G::Timestamp, T1::R>,
T1::Cursor: Cursor<T1::Key, (), G::Timestamp, T1::R>,
[src]
G::Timestamp: TotalOrder + Lattice + Ord,
T1: TraceReader<Val = (), Time = G::Timestamp> + Clone + 'static,
T1::Key: ExchangeData,
T1::R: ExchangeData + Semigroup,
T1::Batch: BatchReader<T1::Key, (), G::Timestamp, T1::R>,
T1::Cursor: Cursor<T1::Key, (), G::Timestamp, T1::R>,