Sha256: 48cdc7a14bec638ef3ec0170a926db63c7edc7bcd0fde5cd580367469b799b4b

Contents?: true

Size: 950 Bytes

Versions: 9

Compression:

Stored size: 950 Bytes

Contents

module Martyr
  module Schema
    class BuiltInMetric < BaseMetric

      attr_accessor :statement, :fact_alias, :typecast, :sub_queries

      def build_data_slice(*args)
        Runtime::MetricDataSlice.new(self, *args)
      end

      def build_memory_slice(*args)
        Runtime::MetricMemorySlice.new(self, *args)
      end

      # @param fact_scopes [Runtime::FactScopeCollection]
      def add_to_select(fact_scopes)
        fact_scopes.add_select_operator_for_metric(name) do |operator|
          operator.add_select(statement, as: fact_alias, data_rollup_sql: data_rollup_sql)
        end
      end

      def extract(fact)
        fact.raw.fetch(fact_alias.to_s).try(:send, typecast || :to_i)
      end

      private

      def data_rollup_sql
        if rollup_function.to_s == 'none'
          fact_alias
        else
          "#{rollup_function.to_s.upcase}(#{fact_alias}) AS #{fact_alias}"
        end
      end

    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
martyr-0.1.82.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.81.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.80.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.79.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.78.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.77.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.76.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.75.pre lib/martyr/schema/metrics/built_in_metric.rb
martyr-0.1.74.pre lib/martyr/schema/metrics/built_in_metric.rb