lib/log_stats/stats.rb in log_stats-0.4.4 vs lib/log_stats/stats.rb in log_stats-0.4.5
- old
+ new
@@ -44,19 +44,25 @@
end
def self.group_by_stats(events, group_by, event_config)
total_count = events.size
events_by_group = events.group_by { |event| group_by[:id].call(event) }.select { |key, _| !key.nil? }
- events_by_group.reduce({}) do |acc, (key, group_events)|
+ grouped = events_by_group.reduce({}) do |acc, (key, group_events)|
group_count = group_events.size
percent = (group_count.to_f*100/total_count).round(4)
acc[key] = {
count: group_count,
percent: percent,
fields: fields(group_events, event_config)
}
acc
end
+ keys = if sort_by = group_by[:sort_by]
+ grouped.keys.sort_by { |key| sort_by.call(grouped[key]) }
+ else
+ grouped.keys
+ end
+ keys.map { |key| {key: key, data: grouped[key]} }
end
def self.avg(events, field_name)
sum = events.lazy.map { |event| event[field_name] }.reduce(&:+)
sum/events.size.to_f