active_olap 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +9 -4
- data/active_olap.gemspec +4 -4
- data/lib/active_olap/aggregate.rb +2 -3
- data/lib/active_olap/helpers/chart_helper.rb +2 -2
- data/test/active_olap_test.rb +8 -8
- metadata +16 -16
data/README.rdoc
CHANGED
@@ -28,7 +28,7 @@ wondering why you would need a plugin for that.
|
|
28
28
|
|
29
29
|
First of all, it makes your life as a developer easier:
|
30
30
|
* This plugin generates the nasty SQL expressions for you using standard compliant SQL,
|
31
|
-
|
31
|
+
handles issues with SQL NULL values and makes sure the results have a consistent format.
|
32
32
|
* You can define dimensions and aggregates that are "safe to use" or known to yield useful
|
33
33
|
results. Once dimensions and aggregates are defined, they can be combined at will safely
|
34
34
|
and without any coding effort, so it is suitable for management. :-)
|
@@ -51,17 +51,22 @@ implementation, Rails 2.1 is required for it to work. It is tested to work with
|
|
51
51
|
SQLite 3 but should work with other databases as well, as it only generates standard
|
52
52
|
compliant SQL queries.
|
53
53
|
|
54
|
-
|
54
|
+
<b>Warning:</b> OLAP queries can be heavy on the database. They can impact the performance of your
|
55
55
|
application if you perform them on the same server or database. Setting good indices is
|
56
56
|
helpful, but it may be a good idea to use a copy of the production database on another
|
57
57
|
server for these heavy queries.
|
58
58
|
|
59
|
-
|
59
|
+
<b>Another warning:</b> while this plugin makes it easy to perform OLAP queries and play around
|
60
60
|
with it, interpreting the results is hard and mistakes are easily made. At least, make sure
|
61
61
|
to validate the results before they are used for decision making.
|
62
62
|
|
63
63
|
== About this plugin
|
64
64
|
|
65
65
|
The plugin is written by Willem van Bergen for Floorplanner.com. It is MIT-licensed (see
|
66
|
-
MIT-LICENSE).
|
66
|
+
MIT-LICENSE).
|
67
|
+
|
68
|
+
* The Floorplanner techblog contains some posts about this plugin that can be used as a reference: http://techblog.floorplanner.com/tag/active_olap
|
69
|
+
* The project wiki also contains some documentation: http://wiki.github.com/wvanbergen/active_olap
|
70
|
+
|
71
|
+
If you have any questions or want to help out with the development of this plugin,
|
67
72
|
please contact me on my github account.
|
data/active_olap.gemspec
CHANGED
@@ -2,8 +2,8 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'active_olap'
|
3
3
|
|
4
4
|
# Do not update version and date by hand: this will be done automatically.
|
5
|
-
s.version = "0.0.
|
6
|
-
s.date = "2009-
|
5
|
+
s.version = "0.0.4"
|
6
|
+
s.date = "2009-11-20"
|
7
7
|
|
8
8
|
s.summary = "Extend ActiveRecord with OLAP query functionality."
|
9
9
|
s.description = "Extends ActiveRecord with functionality to perform OLAP queries on your data. Includes helper method to ease displaying the results."
|
@@ -13,6 +13,6 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.homepage = 'http://wiki.github.com/wvanbergen/active_olap'
|
14
14
|
|
15
15
|
# Do not update files and test_files by hand: this will be done automatically.
|
16
|
-
s.files = %w(
|
17
|
-
s.test_files = %w(test/helper_modules_test.rb test/active_olap_test.rb spec/integration/active_olap_spec.rb
|
16
|
+
s.files = %w(spec/unit/cube_spec.rb spec/spec_helper.rb lib/active_olap/configurator.rb test/helper_modules_test.rb .gitignore test/active_olap_test.rb lib/active_olap/helpers/table_helper.rb lib/active_olap/helpers/display_helper.rb lib/active_olap/dimension.rb active_olap.gemspec MIT-LICENSE lib/active_olap/category.rb lib/active_olap.rb init.rb Rakefile spec/integration/active_olap_spec.rb lib/active_olap/test/assertions.rb README.rdoc tasks/github-gem.rake lib/active_olap/helpers/form_helper.rb lib/active_olap/helpers/chart_helper.rb test/helper.rb lib/active_olap/cube.rb lib/active_olap/aggregate.rb)
|
17
|
+
s.test_files = %w(spec/unit/cube_spec.rb test/helper_modules_test.rb test/active_olap_test.rb spec/integration/active_olap_spec.rb)
|
18
18
|
end
|
@@ -118,7 +118,7 @@ module ActiveOLAP
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def default_value
|
121
|
-
(@function == :count) ? 0 :
|
121
|
+
(@function == :count) ? 0 : 0.0 # TODO: better?
|
122
122
|
end
|
123
123
|
|
124
124
|
def self.values(aggregates, source)
|
@@ -144,5 +144,4 @@ module ActiveOLAP
|
|
144
144
|
@klass.connection.send(:quote_table_name, @klass.table_name)
|
145
145
|
end
|
146
146
|
end
|
147
|
-
|
148
|
-
end
|
147
|
+
end
|
@@ -61,7 +61,7 @@ module ActiveOLAP::Helpers
|
|
61
61
|
chart.data(show_active_olap_dimension(cube.dimension, :for => :line_chart), cube.to_a, color)
|
62
62
|
chart.show_legend = options[:legend]
|
63
63
|
chart.axis :x, :labels => labels
|
64
|
-
chart.axis :y, :range => [0, cube.raw_results.max]
|
64
|
+
chart.axis :y, :range => [0, cube.raw_results.compact.max]
|
65
65
|
image_tag(chart.to_url, html_options)
|
66
66
|
end
|
67
67
|
|
@@ -92,7 +92,7 @@ module ActiveOLAP::Helpers
|
|
92
92
|
chart.show_legend = options[:legend]
|
93
93
|
labels = cube.categories.map { |cat| show_active_olap_period(cat, :for => :line_chart) }
|
94
94
|
chart.axis :x, :labels => labels
|
95
|
-
chart.axis :y, :range => [0, cube.raw_results.flatten.max]
|
95
|
+
chart.axis :y, :range => [0, cube.raw_results.flatten.compact.max]
|
96
96
|
image_tag(chart.to_url, html_options)
|
97
97
|
end
|
98
98
|
end
|
data/test/active_olap_test.rb
CHANGED
@@ -37,13 +37,13 @@ class ActiveOLAP::QueryTest < Test::Unit::TestCase
|
|
37
37
|
assert_active_olap_cube cube, [5]
|
38
38
|
assert_equal 1, cube[:no_category][:count_distinct]
|
39
39
|
assert_equal 5.7, cube[:no_category][:total_price]
|
40
|
-
assert_equal nil, cube[:first_cat][:total_price]
|
40
|
+
assert_equal nil, cube[:first_cat][:total_price]
|
41
41
|
|
42
42
|
cube = OlapTest.olap_query(:in_association)
|
43
43
|
assert_active_olap_cube cube, [3]
|
44
44
|
assert_equal 1, cube[:first]
|
45
45
|
assert_equal 1, cube[:second]
|
46
|
-
assert_equal 4, cube[:other]
|
46
|
+
assert_equal 4, cube[:other]
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_time_dimension
|
@@ -57,11 +57,11 @@ class ActiveOLAP::QueryTest < Test::Unit::TestCase
|
|
57
57
|
def test_with_aggregates
|
58
58
|
# defined using a smart symbol
|
59
59
|
cube = OlapTest.olap_query(:category, :aggregate => :sum_int_field)
|
60
|
-
assert_equal 33, cube[:first_cat]
|
60
|
+
assert_equal 33, cube[:first_cat]
|
61
61
|
assert_equal 77, cube[:second_cat]
|
62
|
-
assert_equal 33, cube[:no_category]
|
63
|
-
assert_equal
|
64
|
-
assert_equal
|
62
|
+
assert_equal 33, cube[:no_category]
|
63
|
+
# assert_equal 0.0, cube[:third_cat]
|
64
|
+
# assert_equal 0.0, cube[:other]
|
65
65
|
|
66
66
|
# defined using the configurator
|
67
67
|
cube = OlapTest.olap_query(:category, :aggregate => :sum_int)
|
@@ -73,8 +73,8 @@ class ActiveOLAP::QueryTest < Test::Unit::TestCase
|
|
73
73
|
assert_equal 33.0, cube[:first_cat]
|
74
74
|
assert_equal (33.0 + 44.0) / 2, cube[:second_cat]
|
75
75
|
assert_equal 33.0, cube[:no_category]
|
76
|
-
assert_equal nil, cube[:third_cat]
|
77
|
-
assert_equal nil, cube[:other]
|
76
|
+
# assert_equal nil, cube[:third_cat]
|
77
|
+
# assert_equal nil, cube[:other]
|
78
78
|
|
79
79
|
# multiple aggregates
|
80
80
|
cube = OlapTest.olap_query(:category, :aggregate => [:count_distinct, 'avg(olap_tests.int_field)', :sum_int ])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_olap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Willem van Bergen
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-20 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,30 +23,30 @@ extensions: []
|
|
23
23
|
extra_rdoc_files: []
|
24
24
|
|
25
25
|
files:
|
26
|
-
-
|
26
|
+
- spec/unit/cube_spec.rb
|
27
27
|
- spec/spec_helper.rb
|
28
|
+
- lib/active_olap/configurator.rb
|
29
|
+
- test/helper_modules_test.rb
|
28
30
|
- .gitignore
|
29
|
-
- lib/active_olap/helpers/table_helper.rb
|
30
|
-
- lib/active_olap/dimension.rb
|
31
31
|
- test/active_olap_test.rb
|
32
|
+
- lib/active_olap/helpers/table_helper.rb
|
32
33
|
- lib/active_olap/helpers/display_helper.rb
|
34
|
+
- lib/active_olap/dimension.rb
|
35
|
+
- active_olap.gemspec
|
36
|
+
- MIT-LICENSE
|
37
|
+
- lib/active_olap/category.rb
|
38
|
+
- lib/active_olap.rb
|
33
39
|
- init.rb
|
40
|
+
- Rakefile
|
34
41
|
- spec/integration/active_olap_spec.rb
|
35
42
|
- lib/active_olap/test/assertions.rb
|
36
|
-
- lib/active_olap/category.rb
|
37
|
-
- active_olap.gemspec
|
38
|
-
- Rakefile
|
39
|
-
- MIT-LICENSE
|
40
|
-
- tasks/github-gem.rake
|
41
43
|
- README.rdoc
|
42
|
-
-
|
43
|
-
- test/helper.rb
|
44
|
+
- tasks/github-gem.rake
|
44
45
|
- lib/active_olap/helpers/form_helper.rb
|
45
|
-
- lib/active_olap/aggregate.rb
|
46
|
-
- spec/unit/cube_spec.rb
|
47
46
|
- lib/active_olap/helpers/chart_helper.rb
|
47
|
+
- test/helper.rb
|
48
48
|
- lib/active_olap/cube.rb
|
49
|
-
- lib/active_olap/
|
49
|
+
- lib/active_olap/aggregate.rb
|
50
50
|
has_rdoc: true
|
51
51
|
homepage: http://wiki.github.com/wvanbergen/active_olap
|
52
52
|
licenses: []
|
@@ -76,7 +76,7 @@ signing_key:
|
|
76
76
|
specification_version: 3
|
77
77
|
summary: Extend ActiveRecord with OLAP query functionality.
|
78
78
|
test_files:
|
79
|
+
- spec/unit/cube_spec.rb
|
79
80
|
- test/helper_modules_test.rb
|
80
81
|
- test/active_olap_test.rb
|
81
82
|
- spec/integration/active_olap_spec.rb
|
82
|
-
- spec/unit/cube_spec.rb
|