Class: OlapReport::Cube::Adapters::Mysql2Adapter
- Inherits:
-
AbstractAdapter
- Object
- AbstractAdapter
- OlapReport::Cube::Adapters::Mysql2Adapter
- Defined in:
- lib/olap_report/cube/adapters/mysql2_adapter.rb
Instance Attribute Summary
Attributes inherited from AbstractAdapter
Instance Method Summary collapse
- #column_name(field, type) ⇒ Object
- #measure_update_sql(measure) ⇒ Object
- #update_aggregated_table(query, update_values_sql) ⇒ Object
Methods inherited from AbstractAdapter
#create_aggregated_table, #initialize, #method_missing
Constructor Details
This class inherits a constructor from OlapReport::Cube::Adapters::AbstractAdapter
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class OlapReport::Cube::Adapters::AbstractAdapter
Instance Method Details
#column_name(field, type) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/olap_report/cube/adapters/mysql2_adapter.rb', line 3 def column_name(field, type) case type when :minute "DATE_FORMAT(#{field}, '%Y-%m-%d %H:%i')" when :hour "DATE_FORMAT(#{field}, '%Y-%m-%d %H')" when :day "DATE_FORMAT(#{field}, '%Y-%m-%d')" when :week "DATE_FORMAT(#{field}, '%Y-%U')" when :month "DATE_FORMAT(#{field}, '%Y-%m')" when :year "DATE_FORMAT(#{field}, '%Y')" end end |
#measure_update_sql(measure) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/olap_report/cube/adapters/mysql2_adapter.rb', line 24 def measure_update_sql(measure) case measure.function when :avg base_measure = measures.values.find{|v| [:sum, :count].include?(v.function)} if base_measure case base_measure.function when :sum "#{measure.name} = (#{base_measure.name} + VALUES(#{base_measure.name})) / (#{base_measure.name} / #{measure.name} + VALUES(#{base_measure.name}) / VALUES(#{measure.name}))" when :count "#{measure.name} = (#{measure.name} * #{base_measure.name} + VALUES(#{measure.name}) * VALUES(#{base_measure.name})) / (#{base_measure.name} + VALUES(#{base_measure.name}))" end else return false end else '%s = %s + VALUES(%s)' % ([measure.name] * 3) end end |
#update_aggregated_table(query, update_values_sql) ⇒ Object
20 21 22 |
# File 'lib/olap_report/cube/adapters/mysql2_adapter.rb', line 20 def update_aggregated_table(query, update_values_sql) connection.execute [sql, 'ON DUPLICATE KEY UPDATE', update_values_sql.join(', ')].join(' ') end |