Sha256: 7e06f94674e2b542de81fbac707020a115bf62dd16d1f05671340fba8b45ec1b
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
module Alf class Aggregator # # Defines a COUNT aggregation operator # class Count < Aggregator def least(); 0; end def happens(memo, tuple) memo + 1; end end # class Count # # Defines a SUM aggregation operator # class Sum < Aggregator def least(); 0; end def _happens(memo, val) memo + val; end end # class Sum # # Defines an AVG aggregation operator # class Avg < Aggregator def least(); [0.0, 0.0]; end def _happens(memo, val) [memo.first + val, memo.last + 1]; end def finalize(memo) memo.first / memo.last end end # class Sum # # Defines a MIN aggregation operator # class Min < Aggregator def least(); nil; end def _happens(memo, val) memo.nil? ? val : (memo < val ? memo : val) end end # class Min # # Defines a MAX aggregation operator # class Max < Aggregator def least(); nil; end def _happens(memo, val) memo.nil? ? val : (memo > val ? memo : val) end end # class Max # # Defines a COLLECT aggregation operator # class Collect < Aggregator def least(); []; end def _happens(memo, val) memo << val end end # # Defines a CONCAT aggregation operator # class Concat < Aggregator def least(); ""; end def default_options {:before => "", :after => "", :between => ""} end def _happens(memo, val) memo << options[:between].to_s unless memo.empty? memo << val.to_s end def finalize(memo) options[:before].to_s + memo + options[:after].to_s end end end # class Aggregator end # module Alf
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
alf-0.10.0 | lib/alf/aggregator/aggregators.rb |