class Axiom::Algebra::Summarization::Summaries

Summaries for all aggregate functions

Public Class Methods

new(header, summarizers) click to toggle source

Initialize Summaries

@param [Relation::Header] header

@param [Hash{Symbol => call}] summarizers

@return [undefined]

@api private

# File lib/axiom/algebra/summarization/summaries.rb, line 19
def initialize(header, summarizers)
  @header    = header
  @summaries = {}
  summarizers.each do |name, summarizer|
    @summaries[name] = Summary.new(summarizer)
  end
end

Public Instance Methods

summarize_by(tuple) click to toggle source

Execute all summarizers with the tuple, summarized by the header

@example

summaries = summaries.summarize_by(header, tuple)

@param [Tuple] tuple

@return [self]

@api public

# File lib/axiom/algebra/summarization/summaries.rb, line 37
def summarize_by(tuple)
  projection = tuple.project(@header)
  @summaries.each_value do |summary|
    summary.summarize_by(projection, tuple)
  end
  self
end
to_hash() click to toggle source

Return the summaries as a Hash

@example

hash = summaries.to_hash

@return [Hash]

@api public

# File lib/axiom/algebra/summarization/summaries.rb, line 53
def to_hash
  @summaries
end