Summarize

Aggregate and compute

Signature

summarize(operand: Relation, by: AttrList, aggs: Summarization) -> Relation

Examples

summarize(shipments, [:sid], total: sum(:qty))
summarize(shipments, [:sid], total: sum{|t| t.qty * 2 })
summarize(shipments, [:pid, :qty], {total: sum{|t| t.qty * 2 }}, allbut: true)

Description

Computes the relation obtained by taking the projection of operand on by attributes then extending each tuple t with the result of aggregations defined by aggs on the tuples from operand matching t.

In SQL terms, SELECT [by], [agg] FROM operand GROUP BY [by].

Implementation notes

As of current Alf version, this operator cannot be translated to SQL code. That means that all computations are done in ruby, which may seriously hurt performance.

Similarly, as summarize tends to be a showstopper during compilation, it is strongly recommended to use it as high as possible in query expressions trees so as to delegate the largest possible query parts to data engines.