class Activecube::Query::Measure
Attributes
modifications[R]
selectors[R]
Public Class Methods
new(cube, key, definition, selectors = [], modifications = [])
click to toggle source
Calls superclass method
Activecube::Query::Item::new
# File lib/activecube/query/measure.rb, line 8 def initialize cube, key, definition, selectors = [], modifications = [] super cube, key, definition @selectors = selectors @modifications = modifications modifier_methods! if definition && definition.class.modifiers end
Public Instance Methods
alias!(new_key)
click to toggle source
# File lib/activecube/query/measure.rb, line 24 def alias! new_key self.class.new cube, new_key, definition, selectors, modifications end
append_query(model, cube_query, table, query)
click to toggle source
# File lib/activecube/query/measure.rb, line 38 def append_query model, cube_query, table, query query = append_with!(model, cube_query, table, query) attr_alias = "`#{key.to_s}`" expr = definition.expression model, table, self, cube_query query.project expr.as(attr_alias) end
condition_query(model, arel_table, cube_query)
click to toggle source
# File lib/activecube/query/measure.rb, line 28 def condition_query model, arel_table, cube_query condition = nil selectors.each do |selector| condition = condition ? condition.and(selector.expression(model, arel_table, cube_query)) : selector.expression(model, arel_table, cube_query) end condition end
modifier(name)
click to toggle source
# File lib/activecube/query/measure.rb, line 49 def modifier name ms = modifications.select{|m| m.modifier.name==name} raise "Found multiple (#{ms.count}) definitions for #{name} in #{self}" if ms.count>1 ms.first end
required_column_names()
click to toggle source
# File lib/activecube/query/measure.rb, line 16 def required_column_names ((definition.class.column_names || []) + selectors.map(&:required_column_names)).flatten.uniq end
to_s()
click to toggle source
# File lib/activecube/query/measure.rb, line 45 def to_s "Metric #{super}" end
when(*args)
click to toggle source
# File lib/activecube/query/measure.rb, line 20 def when *args append *args, @selectors, Selector, cube.selectors end
Private Instance Methods
modifier_methods!()
click to toggle source
# File lib/activecube/query/measure.rb, line 58 def modifier_methods! definition.class.modifiers.each_pair do |key, modifier| define_singleton_method key do |*args| (@modifications ||= []) << Modification.new(modifier, *args) self end end end