Sha256: 4ebc20374cad709ba9595636b446021be0c4281aa2b0363c2f4bdcace0f9de2a

Contents?: true

Size: 1.08 KB

Versions: 11

Compression:

Stored size: 1.08 KB

Contents

require "active_support/core_ext/numeric/conversions"

module Timescaledb
  module StatsReport
    module_function
    def resume(scope=Hypertable.all)
      base_filter = {hypertable_name: scope.pluck(:hypertable_name)}
      {
        hypertables: {
          count: scope.count,
          uncompressed: scope.to_a.count { |h| h.compression_stats.empty? },
          approximate_row_count: approximate_row_count(scope),
          chunks: Chunk.where(base_filter).resume,
          size: compression_resume(scope)
        },
        continuous_aggregates: ContinuousAggregates.where(base_filter).resume,
        jobs_stats: JobStats.where(base_filter).resume
      }
    end

    def compression_resume(scope)
      sum = -> (method) { (scope.map(&method).inject(:+) || 0).to_s(:human_size)}
      {
        uncompressed: sum[:before_total_bytes],
        compressed: sum[:after_total_bytes]
      }
    end

    def approximate_row_count(scope)
      scope.to_a.map do |hypertable|
        { hypertable.hypertable_name => hypertable.approximate_row_count }
      end.inject(&:merge!)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
timescaledb-0.3.2 lib/timescaledb/stats_report.rb
timescaledb-0.3.1 lib/timescaledb/stats_report.rb
timescaledb-0.3.0 lib/timescaledb/stats_report.rb
timescaledb-0.2.9 lib/timescaledb/stats_report.rb
timescaledb-0.2.8 lib/timescaledb/stats_report.rb
timescaledb-0.2.7 lib/timescaledb/stats_report.rb
timescaledb-0.2.6 lib/timescaledb/stats_report.rb
timescaledb-0.2.5 lib/timescaledb/stats_report.rb
timescaledb-0.2.4 lib/timescaledb/stats_report.rb
timescaledb-0.2.3 lib/timescaledb/stats_report.rb
timescaledb-0.2.2 lib/timescaledb/stats_report.rb