rubiks 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.rspec +4 -0
  2. data/.travis.yml +6 -0
  3. data/Gemfile +17 -2
  4. data/Guardfile +4 -4
  5. data/LICENSE.txt +1 -1
  6. data/README.md +9 -4
  7. data/Rakefile +3 -8
  8. data/lib/rubiks/nodes/annotated_node.rb +20 -0
  9. data/lib/rubiks/nodes/cube.rb +77 -0
  10. data/lib/rubiks/nodes/dimension.rb +54 -0
  11. data/lib/rubiks/nodes/hierarchy.rb +55 -0
  12. data/lib/rubiks/nodes/level.rb +29 -0
  13. data/lib/rubiks/nodes/measure.rb +66 -0
  14. data/lib/rubiks/nodes/schema.rb +61 -0
  15. data/lib/rubiks/nodes/validated_node.rb +47 -0
  16. data/lib/rubiks/version.rb +2 -2
  17. data/lib/rubiks.rb +6 -8
  18. data/rubiks.gemspec +5 -13
  19. data/spec/examples/mondrian_xml_example_spec.rb +91 -0
  20. data/spec/rubiks/nodes/annotated_node_spec.rb +24 -0
  21. data/spec/rubiks/nodes/cube_spec.rb +39 -0
  22. data/spec/rubiks/nodes/dimension_spec.rb +26 -0
  23. data/spec/rubiks/nodes/hierarchy_spec.rb +27 -0
  24. data/spec/rubiks/nodes/level_spec.rb +26 -0
  25. data/spec/rubiks/nodes/measure_spec.rb +31 -0
  26. data/spec/rubiks/nodes/schema_spec.rb +59 -0
  27. data/spec/rubiks/nodes/validated_node_spec.rb +49 -0
  28. data/spec/spec_helper.rb +22 -0
  29. data/spec/support/matchers/be_like.rb +24 -0
  30. data/spec/support/schema_context.rb +46 -0
  31. metadata +45 -144
  32. data/.simplecov +0 -6
  33. data/examples/finance/.rvmrc +0 -1
  34. data/examples/finance/Gemfile +0 -11
  35. data/examples/finance/app.rb +0 -14
  36. data/examples/finance/database.yml +0 -5
  37. data/examples/finance/domain.rb +0 -44
  38. data/examples/finance/setup +0 -46
  39. data/lib/rubiks/cube.rb +0 -95
  40. data/lib/rubiks/dimension.rb +0 -23
  41. data/lib/rubiks/hierarchy.rb +0 -15
  42. data/lib/rubiks/transformers/lookup_transformer.rb +0 -101
  43. data/test/rubiks/test_cube.rb +0 -15
  44. data/test/rubiks/test_dimension.rb +0 -11
  45. data/test/test_helper.rb +0 -6
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Rubiks::Cube do
4
+ include_context 'schema_context'
5
+
6
+ subject { described_class.new_from_hash }
7
+
8
+ specify { subject.respond_to?(:from_hash) }
9
+ specify { subject.respond_to?(:to_hash) }
10
+ specify { subject.respond_to?(:dimensions) }
11
+ specify { subject.respond_to?(:measures) }
12
+
13
+ context 'when parsed from a valid hash' do
14
+ subject { described_class.new_from_hash(cube_hash) }
15
+
16
+ it { should be_valid }
17
+
18
+ its(:to_hash) { should have_key('name') }
19
+
20
+ it 'has a Rubiks::Dimension' do
21
+ subject.dimensions.first.should be_kind_of(::Rubiks::Dimension)
22
+ end
23
+
24
+ it 'has a Rubiks::Measure' do
25
+ subject.measures.first.should be_kind_of(::Rubiks::Measure)
26
+ end
27
+
28
+ it 'has one value' do
29
+ subject.values.size.should eq(1)
30
+ end
31
+ end
32
+
33
+ context 'when parsed from an invalid (empty) hash' do
34
+ subject { described_class.new_from_hash({}) }
35
+
36
+ it { should_not be_valid }
37
+ end
38
+
39
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Rubiks::Dimension do
4
+ include_context 'schema_context'
5
+
6
+ subject { described_class.new_from_hash }
7
+
8
+ specify { subject.respond_to?(:from_hash) }
9
+ specify { subject.respond_to?(:to_hash) }
10
+ specify { subject.respond_to?(:hierarchies) }
11
+
12
+ context 'when parsed from a valid hash' do
13
+ subject { described_class.new_from_hash(dimension_hash) }
14
+
15
+ its(:to_hash) { should have_key('hierarchies') }
16
+
17
+ it { should be_valid }
18
+ end
19
+
20
+ context 'when parsed from an invalid (empty) hash' do
21
+ subject { described_class.new_from_hash({}) }
22
+
23
+ it { should_not be_valid }
24
+ end
25
+
26
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+ # Mondrian level has: has_all, all_member_name, primary_key
3
+
4
+ describe ::Rubiks::Hierarchy do
5
+ include_context 'schema_context'
6
+
7
+ subject { described_class.new_from_hash }
8
+
9
+ specify { subject.respond_to?(:from_hash) }
10
+ specify { subject.respond_to?(:to_hash) }
11
+ specify { subject.respond_to?(:levels) }
12
+
13
+ context 'when parsed from a valid hash' do
14
+ subject { described_class.new_from_hash(hierarchy_hash) }
15
+
16
+ its(:to_hash) { should have_key('levels') }
17
+
18
+ it { should be_valid }
19
+ end
20
+
21
+ context 'when parsed from an invalid (empty) hash' do
22
+ subject { described_class.new_from_hash({}) }
23
+
24
+ it { should_not be_valid }
25
+ end
26
+
27
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+ # Mondrian level has: unique_members, column, type, name_column, ordinal_column
3
+
4
+ describe ::Rubiks::Level do
5
+ include_context 'schema_context'
6
+
7
+ subject { described_class.new_from_hash }
8
+
9
+ specify { subject.respond_to?(:from_hash) }
10
+ specify { subject.respond_to?(:to_hash) }
11
+
12
+ context 'when parsed from a valid hash' do
13
+ subject { described_class.new_from_hash(level_hash) }
14
+
15
+ its(:to_hash) { should have_key('name') }
16
+
17
+ it { should be_valid }
18
+ end
19
+
20
+ context 'when parsed from an invalid (empty) hash' do
21
+ subject { described_class.new_from_hash({}) }
22
+
23
+ it { should_not be_valid }
24
+ end
25
+
26
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Rubiks::Measure do
4
+ include_context 'schema_context'
5
+
6
+ subject { described_class.new_from_hash }
7
+
8
+ specify { subject.respond_to?(:from_hash) }
9
+ specify { subject.respond_to?(:to_hash) }
10
+ specify { subject.respond_to?(:column) }
11
+ specify { subject.respond_to?(:aggregator) }
12
+ specify { subject.respond_to?(:format_string) }
13
+
14
+ context 'when parsed from a valid hash' do
15
+ subject { described_class.new_from_hash(measure_hash) }
16
+
17
+ it { should be_valid }
18
+
19
+ its(:to_hash) { should have_key('name') }
20
+ its(:to_hash) { should have_key('column') }
21
+ its(:to_hash) { should have_key('aggregator') }
22
+ its(:to_hash) { should have_key('format_string') }
23
+ end
24
+
25
+ context 'when parsed from an invalid (empty) hash' do
26
+ subject { described_class.new_from_hash({}) }
27
+
28
+ it { should_not be_valid }
29
+ end
30
+
31
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Rubiks::Schema do
4
+ include_context 'schema_context'
5
+
6
+ subject { described_class.new_from_hash }
7
+
8
+ specify { subject.respond_to?(:from_hash) }
9
+ specify { subject.respond_to?(:to_hash) }
10
+ specify { subject.respond_to?(:to_json) }
11
+ specify { subject.respond_to?(:to_xml) }
12
+ specify { subject.respond_to?(:cubes) }
13
+
14
+ context 'when parsed from a valid hash' do
15
+ subject { described_class.new_from_hash(schema_hash) }
16
+
17
+ it { should be_valid }
18
+
19
+ its(:to_hash) { should have_key('cubes') }
20
+
21
+ it 'has a cube' do
22
+ subject.cubes.length.should eq 1
23
+ end
24
+
25
+ it 'has a Rubiks::Cube' do
26
+ subject.cubes.first.should be_kind_of(::Rubiks::Cube)
27
+ end
28
+
29
+ it 'has no values' do
30
+ subject.values.should eq([])
31
+ end
32
+ end
33
+
34
+ context 'when parsed from an invalid (empty) hash' do
35
+ subject { described_class.new_from_hash({}) }
36
+
37
+ it { should_not be_valid }
38
+
39
+ describe '#to_xml' do
40
+ it 'renders XML' do
41
+ subject.to_xml.should be_like <<-XML
42
+ <?xml version="1.0" encoding="UTF-8"?>
43
+ <Schema>
44
+ </Schema>
45
+ XML
46
+ end
47
+ end
48
+
49
+ describe '#to_json' do
50
+ it 'renders JSON' do
51
+ subject.to_json.should be_like <<-JSON
52
+ {}
53
+ JSON
54
+ end
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ class NodeWithValidation < ::Rubiks::ValidatedNode
4
+ validates :something
5
+
6
+ def something
7
+ errors << 'Something is required'
8
+ end
9
+ end
10
+
11
+ class SubNodeWithValidation < NodeWithValidation
12
+ end
13
+
14
+ class NodeWithAdditionalValidation < NodeWithValidation
15
+ validates :something_else
16
+ end
17
+
18
+
19
+
20
+
21
+ describe NodeWithValidation do
22
+ subject { described_class }
23
+
24
+ it 'has a validator' do
25
+ subject.validators.length.should eq 1
26
+ end
27
+
28
+ context 'when parsed from an invalid (empty) hash' do
29
+ subject { described_class.new }
30
+
31
+ it { should_not be_valid }
32
+ end
33
+ end
34
+
35
+ describe SubNodeWithValidation do
36
+ subject { described_class }
37
+
38
+ it 'inherits the validator of the super class' do
39
+ subject.validators.length.should eq 1
40
+ end
41
+ end
42
+
43
+ describe NodeWithAdditionalValidation do
44
+ subject { described_class }
45
+
46
+ it 'has 2 validators' do
47
+ subject.validators.length.should eq 2
48
+ end
49
+ end
@@ -0,0 +1,22 @@
1
+ lib_path = File.expand_path("../../lib", __FILE__)
2
+ $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
3
+
4
+ begin
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_filter '/spec/'
8
+ end
9
+ rescue LoadError
10
+ end
11
+
12
+ require 'bundler'
13
+ Bundler.require(:default, :development, :test)
14
+
15
+ require 'rubiks'
16
+
17
+ require 'support/schema_context'
18
+ require 'support/matchers/be_like'
19
+
20
+ RSpec.configure do |config|
21
+ config.include Matchers
22
+ end
@@ -0,0 +1,24 @@
1
+ module Matchers
2
+ class BeLike
3
+ def initialize(expected)
4
+ @expected = expected.gsub(/>\s*\n\s*/, '> ').gsub(/\s+/, ' ').strip
5
+ end
6
+
7
+ def matches?(actual)
8
+ @actual = actual.gsub(/>\s*\n\s*/, '> ').gsub(/\s+/, ' ').strip
9
+ @expected == @actual
10
+ end
11
+
12
+ def failure_message
13
+ "expected\n#{@actual}\nto be like\n#{@expected}"
14
+ end
15
+
16
+ def negative_failure_message
17
+ "expected\n#{@actual}\nto be unlike\n#{@expected}"
18
+ end
19
+ end
20
+
21
+ def be_like(expected)
22
+ BeLike.new(expected)
23
+ end
24
+ end
@@ -0,0 +1,46 @@
1
+ shared_context 'schema_context' do
2
+
3
+ def schema_hash
4
+ {
5
+ 'cubes' => [cube_hash.deep_dup]
6
+ }
7
+ end
8
+
9
+ def cube_hash
10
+ {
11
+ 'name' => 'fake_cube',
12
+ 'dimensions' => [dimension_hash.deep_dup],
13
+ 'measures' => [measure_hash.deep_dup]
14
+ }
15
+ end
16
+
17
+ def dimension_hash
18
+ {
19
+ 'name' => 'fake_dimension',
20
+ 'hierarchies' => [hierarchy_hash.deep_dup]
21
+ }
22
+ end
23
+
24
+ def hierarchy_hash
25
+ {
26
+ 'name' => 'fake_hierarchy',
27
+ 'levels' => [level_hash.deep_dup]
28
+ }
29
+ end
30
+
31
+ def level_hash
32
+ {
33
+ 'name' => 'fake_level'
34
+ }
35
+ end
36
+
37
+ def measure_hash
38
+ {
39
+ 'name' => 'fake_measure',
40
+ 'column' => 'amount',
41
+ 'aggregator' => 'count',
42
+ 'format_string' => '$#,###'
43
+ }
44
+ end
45
+
46
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubiks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-16 00:00:00.000000000 Z
12
+ date: 2013-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: arel
15
+ name: rltk
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
@@ -28,126 +28,14 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
- name: awesome_print
31
+ name: activesupport
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: guard
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: guard-minitest
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: minitest
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: pry
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: rake
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rb-fsevent
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
- - !ruby/object:Gem::Dependency
143
- name: simplecov
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ! '>='
148
- - !ruby/object:Gem::Version
149
- version: '0'
150
- type: :development
38
+ type: :runtime
151
39
  prerelease: false
152
40
  version_requirements: !ruby/object:Gem::Requirement
153
41
  none: false
@@ -156,14 +44,14 @@ dependencies:
156
44
  - !ruby/object:Gem::Version
157
45
  version: '0'
158
46
  - !ruby/object:Gem::Dependency
159
- name: simplecov-gem-adapter
47
+ name: builder
160
48
  requirement: !ruby/object:Gem::Requirement
161
49
  none: false
162
50
  requirements:
163
51
  - - ! '>='
164
52
  - !ruby/object:Gem::Version
165
53
  version: '0'
166
- type: :development
54
+ type: :runtime
167
55
  prerelease: false
168
56
  version_requirements: !ruby/object:Gem::Requirement
169
57
  none: false
@@ -171,7 +59,7 @@ dependencies:
171
59
  - - ! '>='
172
60
  - !ruby/object:Gem::Version
173
61
  version: '0'
174
- description: A Ruby OLAP Cube library
62
+ description: Define an OLAP schema
175
63
  email:
176
64
  - johnnyt@moneydesktop.com
177
65
  executables: []
@@ -179,28 +67,36 @@ extensions: []
179
67
  extra_rdoc_files: []
180
68
  files:
181
69
  - .gitignore
182
- - .simplecov
70
+ - .rspec
71
+ - .travis.yml
183
72
  - Gemfile
184
73
  - Guardfile
185
74
  - LICENSE.txt
186
75
  - README.md
187
76
  - Rakefile
188
- - examples/finance/.rvmrc
189
- - examples/finance/Gemfile
190
- - examples/finance/app.rb
191
- - examples/finance/database.yml
192
- - examples/finance/domain.rb
193
- - examples/finance/setup
194
77
  - lib/rubiks.rb
195
- - lib/rubiks/cube.rb
196
- - lib/rubiks/dimension.rb
197
- - lib/rubiks/hierarchy.rb
198
- - lib/rubiks/transformers/lookup_transformer.rb
78
+ - lib/rubiks/nodes/annotated_node.rb
79
+ - lib/rubiks/nodes/cube.rb
80
+ - lib/rubiks/nodes/dimension.rb
81
+ - lib/rubiks/nodes/hierarchy.rb
82
+ - lib/rubiks/nodes/level.rb
83
+ - lib/rubiks/nodes/measure.rb
84
+ - lib/rubiks/nodes/schema.rb
85
+ - lib/rubiks/nodes/validated_node.rb
199
86
  - lib/rubiks/version.rb
200
87
  - rubiks.gemspec
201
- - test/rubiks/test_cube.rb
202
- - test/rubiks/test_dimension.rb
203
- - test/test_helper.rb
88
+ - spec/examples/mondrian_xml_example_spec.rb
89
+ - spec/rubiks/nodes/annotated_node_spec.rb
90
+ - spec/rubiks/nodes/cube_spec.rb
91
+ - spec/rubiks/nodes/dimension_spec.rb
92
+ - spec/rubiks/nodes/hierarchy_spec.rb
93
+ - spec/rubiks/nodes/level_spec.rb
94
+ - spec/rubiks/nodes/measure_spec.rb
95
+ - spec/rubiks/nodes/schema_spec.rb
96
+ - spec/rubiks/nodes/validated_node_spec.rb
97
+ - spec/spec_helper.rb
98
+ - spec/support/matchers/be_like.rb
99
+ - spec/support/schema_context.rb
204
100
  homepage: https://github.com/moneydesktop/rubiks
205
101
  licenses: []
206
102
  post_install_message:
@@ -213,25 +109,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
109
  - - ! '>='
214
110
  - !ruby/object:Gem::Version
215
111
  version: '0'
216
- segments:
217
- - 0
218
- hash: -2306503118888220795
219
112
  required_rubygems_version: !ruby/object:Gem::Requirement
220
113
  none: false
221
114
  requirements:
222
115
  - - ! '>='
223
116
  - !ruby/object:Gem::Version
224
117
  version: '0'
225
- segments:
226
- - 0
227
- hash: -2306503118888220795
228
118
  requirements: []
229
119
  rubyforge_project:
230
120
  rubygems_version: 1.8.24
231
121
  signing_key:
232
122
  specification_version: 3
233
- summary: A Ruby OLAP Cube library
123
+ summary: Rubiks is a Ruby gem that defines an OLAP schema and can output the schema
124
+ as XML and JSON.
234
125
  test_files:
235
- - test/rubiks/test_cube.rb
236
- - test/rubiks/test_dimension.rb
237
- - test/test_helper.rb
126
+ - spec/examples/mondrian_xml_example_spec.rb
127
+ - spec/rubiks/nodes/annotated_node_spec.rb
128
+ - spec/rubiks/nodes/cube_spec.rb
129
+ - spec/rubiks/nodes/dimension_spec.rb
130
+ - spec/rubiks/nodes/hierarchy_spec.rb
131
+ - spec/rubiks/nodes/level_spec.rb
132
+ - spec/rubiks/nodes/measure_spec.rb
133
+ - spec/rubiks/nodes/schema_spec.rb
134
+ - spec/rubiks/nodes/validated_node_spec.rb
135
+ - spec/spec_helper.rb
136
+ - spec/support/matchers/be_like.rb
137
+ - spec/support/schema_context.rb
138
+ has_rdoc:
data/.simplecov DELETED
@@ -1,6 +0,0 @@
1
- require 'simplecov-gem-adapter'
2
-
3
- SimpleCov.use_merging true
4
- SimpleCov.start 'gem' do
5
- merge_timeout 3600
6
- end
@@ -1 +0,0 @@
1
- rvm use jruby-1.7.0
@@ -1,11 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'rubiks', :path => '../../'
4
-
5
- gem 'activerecord', :require => 'active_record'
6
- gem 'activerecord-jdbcpostgresql-adapter'
7
- gem 'awesome_print'
8
- gem 'jruby-openssl'
9
- gem 'mondrian-olap'
10
- gem 'pry'
11
- gem 'pry-nav'
@@ -1,14 +0,0 @@
1
- require 'bundler'
2
- Bundler.require
3
- require 'pry'
4
-
5
- ActiveRecord::Base.establish_connection(YAML.load_file('./database.yml'))
6
- require './domain'
7
-
8
- query = "SELECT {[Measures].[Balance]} ON COLUMNS, {[Customers].children} ON ROWS FROM [CubeAccountSnapshots] WHERE ([Date].[2012].[4])"
9
-
10
- cas = CubeAccountSnapshot.last
11
-
12
- binding.pry
13
-
14
- cas.mdx query
@@ -1,5 +0,0 @@
1
- adapter: postgresql
2
- encoding: utf8
3
- host: localhost
4
- username: postgres
5
- database: finance_development