Class: Activecube::Query::Measure
- Defined in:
- lib/activecube/query/measure.rb
Instance Attribute Summary collapse
-
#modifications ⇒ Object
readonly
Returns the value of attribute modifications.
-
#selectors ⇒ Object
readonly
Returns the value of attribute selectors.
Attributes inherited from Item
Instance Method Summary collapse
- #alias!(new_key) ⇒ Object
- #append_query(model, cube_query, table, query) ⇒ Object
- #condition_query(model, arel_table, cube_query) ⇒ Object
-
#initialize(cube, key, definition, selectors = [], modifications = []) ⇒ Measure
constructor
A new instance of Measure.
- #modifier(name) ⇒ Object
- #required_column_names ⇒ Object
- #to_s ⇒ Object
- #when(*args) ⇒ Object
Constructor Details
#initialize(cube, key, definition, selectors = [], modifications = []) ⇒ Measure
Returns a new instance of Measure.
8 9 10 11 12 13 14 |
# 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.class.modifiers end |
Instance Attribute Details
#modifications ⇒ Object (readonly)
Returns the value of attribute modifications.
6 7 8 |
# File 'lib/activecube/query/measure.rb', line 6 def modifications @modifications end |
#selectors ⇒ Object (readonly)
Returns the value of attribute selectors.
6 7 8 |
# File 'lib/activecube/query/measure.rb', line 6 def selectors @selectors end |
Instance Method Details
#alias!(new_key) ⇒ Object
24 25 26 |
# 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) ⇒ Object
38 39 40 41 42 |
# File 'lib/activecube/query/measure.rb', line 38 def append_query 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) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# 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) ⇒ Object
48 49 50 51 52 |
# File 'lib/activecube/query/measure.rb', line 48 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 ⇒ Object
16 17 18 |
# 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 ⇒ Object
44 45 46 |
# File 'lib/activecube/query/measure.rb', line 44 def to_s "Metric #{super}" end |
#when(*args) ⇒ Object
20 21 22 |
# File 'lib/activecube/query/measure.rb', line 20 def when *args append *args, @selectors, Selector, cube.selectors end |