Method: Rollup.multi_series

Defined in:
lib/rollup.rb

.multi_series(name, interval: "day") ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rollup.rb', line 31

def multi_series(name, interval: "day")
  Utils.check_dimensions

  relation = where(name: name, interval: interval)

  # use select_all to reduce allocations
  sql = relation.order(:time).select(Utils.time_sql(interval), :value, :dimensions).to_sql
  result = connection_pool.with_connection { |c| c.select_all(sql) }.rows

  result.group_by { |r| JSON.parse(r[2]) }.map do |dimensions, rollups|
    {dimensions: dimensions, data: Utils.make_series(rollups, interval)}
  end
end