Sha256: 0acec6a08131c1ca10f3cc23b41307313ee31fda1fce6b9aea59e418af1fff3c

Contents?: true

Size: 542 Bytes

Versions: 15

Compression:

Stored size: 542 Bytes

Contents

module PulseMeter
  module Sensor
    module Timelined
      # Calculates n'th percentile in interval
      class Percentile < ZSetBased
        attr_reader :p_value

        def initialize(name, options)
          @p_value = assert_ranged_float!(options, :p, 0, 1)
          super(name, options)
        end

        def calculate(key, count)
          position = @p_value > 0 ? (@p_value * count).round - 1 : 0
          el = redis.zrange(key, position, position)[0]
          redis.zscore(key, el)
        end

      end
    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
pulse_meter_core-0.5.5 lib/pulse_meter/sensor/timelined/percentile.rb
pulse_meter_core-0.5.4 lib/pulse_meter/sensor/timelined/percentile.rb
pulse_meter_core-0.5.3 lib/pulse_meter/sensor/timelined/percentile.rb
pulse_meter_core-0.5.2 lib/pulse_meter/sensor/timelined/percentile.rb
pulse_meter_core-0.5.1 lib/pulse_meter/sensor/timelined/percentile.rb
pulse_meter_core-0.5.0 lib/pulse_meter/sensor/timelined/percentile.rb
pulse_meter_core-0.4.13 lib/pulse_meter/sensor/timelined/percentile.rb
pulse-meter-0.4.9 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.8 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.7 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.6 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.5 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.4 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.3 lib/pulse-meter/sensor/timelined/percentile.rb
pulse-meter-0.4.2 lib/pulse-meter/sensor/timelined/percentile.rb