chicagowarehouse 0.4.4 → 0.4.5
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/Rakefile +1 -1
- data/chicagowarehouse.gemspec +3 -3
- data/lib/chicago/schema/builders/dimension_builder.rb +10 -0
- data/lib/chicago/schema/dimension.rb +6 -0
- data/lib/chicago/schema/dimension_reference.rb +5 -1
- data/spec/schema/dimension_reference_spec.rb +10 -0
- data/spec/schema/dimension_spec.rb +12 -0
- metadata +53 -53
data/Rakefile
CHANGED
|
@@ -14,7 +14,7 @@ require 'rake'
|
|
|
14
14
|
require 'jeweler'
|
|
15
15
|
Jeweler::Tasks.new do |gem|
|
|
16
16
|
gem.name = "chicagowarehouse"
|
|
17
|
-
gem.version = "0.4.
|
|
17
|
+
gem.version = "0.4.5"
|
|
18
18
|
gem.summary = "Ruby Data Warehousing"
|
|
19
19
|
gem.description = "Simple Data Warehouse toolkit for ruby"
|
|
20
20
|
gem.author = "Roland Swingler"
|
data/chicagowarehouse.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "chicagowarehouse"
|
|
8
|
-
s.version = "0.4.
|
|
8
|
+
s.version = "0.4.5"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Roland Swingler"]
|
|
12
|
-
s.date = "2013-
|
|
12
|
+
s.date = "2013-09-16"
|
|
13
13
|
s.description = "Simple Data Warehouse toolkit for ruby"
|
|
14
14
|
s.email = "roland.swingler@gmail.com"
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -83,7 +83,7 @@ Gem::Specification.new do |s|
|
|
|
83
83
|
s.homepage = "http://github.com/notonthehighstreet/chicago"
|
|
84
84
|
s.licenses = ["MIT"]
|
|
85
85
|
s.require_paths = ["lib"]
|
|
86
|
-
s.rubygems_version = "1.8.
|
|
86
|
+
s.rubygems_version = "1.8.15"
|
|
87
87
|
s.summary = "Ruby Data Warehousing"
|
|
88
88
|
|
|
89
89
|
if s.respond_to? :specification_version then
|
|
@@ -65,5 +65,15 @@ module Chicago::Schema::Builders
|
|
|
65
65
|
def has_predetermined_values
|
|
66
66
|
@options[:predetermined_values] = true
|
|
67
67
|
end
|
|
68
|
+
|
|
69
|
+
# Defines this dimension as uncountable.
|
|
70
|
+
#
|
|
71
|
+
# By default, dimensions are considered countable entities if they
|
|
72
|
+
# have an original_id column. In some cases, a dimension may be
|
|
73
|
+
# identifiable by this column, but still not semantically be a
|
|
74
|
+
# countable entity.
|
|
75
|
+
def uncountable
|
|
76
|
+
@options[:uncountable] = true
|
|
77
|
+
end
|
|
68
78
|
end
|
|
69
79
|
end
|
|
@@ -61,6 +61,7 @@ module Chicago
|
|
|
61
61
|
@table_name = sprintf(DIMENSION_TABLE_FORMAT, name).to_sym
|
|
62
62
|
@key_table_name = sprintf(KEY_TABLE_FORMAT, @table_name).to_sym
|
|
63
63
|
@predetermined_values = !! opts[:predetermined_values]
|
|
64
|
+
@countable = !opts[:uncountable]
|
|
64
65
|
check_null_records
|
|
65
66
|
end
|
|
66
67
|
|
|
@@ -96,6 +97,11 @@ module Chicago
|
|
|
96
97
|
!! original_key
|
|
97
98
|
end
|
|
98
99
|
|
|
100
|
+
# Returns true if these dimension entries can be counted.
|
|
101
|
+
def countable?
|
|
102
|
+
@countable && identifiable?
|
|
103
|
+
end
|
|
104
|
+
|
|
99
105
|
# Returns true if the set of values for this dimension is
|
|
100
106
|
# pretermined.
|
|
101
107
|
#
|
|
@@ -8,7 +8,7 @@ module Chicago
|
|
|
8
8
|
class DimensionReference < Column
|
|
9
9
|
extend Forwardable
|
|
10
10
|
|
|
11
|
-
def_delegators :@dimension, :columns, :column_definitions, :identifiers, :main_identifier, :identifiable?, :original_key, :natural_key, :table_name, :[], :key_table_name
|
|
11
|
+
def_delegators :@dimension, :columns, :column_definitions, :identifiers, :main_identifier, :identifiable?, :original_key, :natural_key, :table_name, :[], :key_table_name, :countable?
|
|
12
12
|
|
|
13
13
|
def initialize(name, dimension, opts={})
|
|
14
14
|
super name, :integer, opts.merge(:min => 0)
|
|
@@ -17,6 +17,10 @@ module Chicago
|
|
|
17
17
|
@key_name = opts[:key_name] || "#{@name}_dimension_id".to_sym
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def countable_label
|
|
21
|
+
"No. of #{label.pluralize}"
|
|
22
|
+
end
|
|
23
|
+
|
|
20
24
|
# Returns the key name of this dimension.
|
|
21
25
|
def database_name
|
|
22
26
|
@key_name
|
|
@@ -36,6 +36,16 @@ describe Chicago::Schema::DimensionReference do
|
|
|
36
36
|
described_class.new(:foo, @dimension).original_key.should == :result
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
it "returns countable from the dimension" do
|
|
40
|
+
@dimension.should_receive(:countable?).and_return(true)
|
|
41
|
+
described_class.new(:foo, @dimension).should be_countable
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "has a countable label" do
|
|
45
|
+
described_class.new(:foo, @dimension).countable_label.
|
|
46
|
+
should == "No. of Foos"
|
|
47
|
+
end
|
|
48
|
+
|
|
39
49
|
it "returns natural_key from the dimension" do
|
|
40
50
|
@dimension.should_receive(:natural_key).and_return(:result)
|
|
41
51
|
described_class.new(:foo, @dimension).natural_key.should == :result
|
|
@@ -103,6 +103,18 @@ describe Chicago::Schema::Dimension do
|
|
|
103
103
|
described_class.new(:user, :columns => [column]).should be_identifiable
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
+
it "is considered countable if it has an original key [DEPRECATED]" do
|
|
107
|
+
column = stub(:c, :name => :original_id)
|
|
108
|
+
described_class.new(:user, :columns => [column]).should be_countable
|
|
109
|
+
described_class.new(:user, :columns => []).should_not be_countable
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "can be marked as uncountable" do
|
|
113
|
+
column = stub(:c, :name => :original_id)
|
|
114
|
+
described_class.new(:user, :columns => [column],
|
|
115
|
+
:uncountable => true).should_not be_countable
|
|
116
|
+
end
|
|
117
|
+
|
|
106
118
|
it "can have predetermined values" do
|
|
107
119
|
described_class.new(:countries, :predetermined_values => true).should have_predetermined_values
|
|
108
120
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chicagowarehouse
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 5
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 4
|
|
9
|
-
-
|
|
10
|
-
version: 0.4.
|
|
9
|
+
- 5
|
|
10
|
+
version: 0.4.5
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Roland Swingler
|
|
@@ -15,10 +15,12 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2013-
|
|
18
|
+
date: 2013-09-16 00:00:00 Z
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
21
|
-
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
22
24
|
none: false
|
|
23
25
|
requirements:
|
|
24
26
|
- - ~>
|
|
@@ -29,11 +31,11 @@ dependencies:
|
|
|
29
31
|
- 0
|
|
30
32
|
version: "3.0"
|
|
31
33
|
name: sequel
|
|
32
|
-
|
|
33
|
-
type: :runtime
|
|
34
|
-
requirement: *id001
|
|
34
|
+
version_requirements: *id001
|
|
35
35
|
- !ruby/object:Gem::Dependency
|
|
36
|
-
|
|
36
|
+
type: :runtime
|
|
37
|
+
prerelease: false
|
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
37
39
|
none: false
|
|
38
40
|
requirements:
|
|
39
41
|
- - ">="
|
|
@@ -45,11 +47,11 @@ dependencies:
|
|
|
45
47
|
- 2
|
|
46
48
|
version: 0.3.2
|
|
47
49
|
name: sequel_migration_builder
|
|
48
|
-
|
|
49
|
-
type: :runtime
|
|
50
|
-
requirement: *id002
|
|
50
|
+
version_requirements: *id002
|
|
51
51
|
- !ruby/object:Gem::Dependency
|
|
52
|
-
|
|
52
|
+
type: :runtime
|
|
53
|
+
prerelease: false
|
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
53
55
|
none: false
|
|
54
56
|
requirements:
|
|
55
57
|
- - "="
|
|
@@ -61,11 +63,11 @@ dependencies:
|
|
|
61
63
|
- 1
|
|
62
64
|
version: 2.8.1
|
|
63
65
|
name: mysql
|
|
64
|
-
|
|
65
|
-
type: :runtime
|
|
66
|
-
requirement: *id003
|
|
66
|
+
version_requirements: *id003
|
|
67
67
|
- !ruby/object:Gem::Dependency
|
|
68
|
-
|
|
68
|
+
type: :runtime
|
|
69
|
+
prerelease: false
|
|
70
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
69
71
|
none: false
|
|
70
72
|
requirements:
|
|
71
73
|
- - ">="
|
|
@@ -75,11 +77,11 @@ dependencies:
|
|
|
75
77
|
- 0
|
|
76
78
|
version: "0"
|
|
77
79
|
name: chronic
|
|
78
|
-
|
|
79
|
-
type: :runtime
|
|
80
|
-
requirement: *id004
|
|
80
|
+
version_requirements: *id004
|
|
81
81
|
- !ruby/object:Gem::Dependency
|
|
82
|
-
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
83
85
|
none: false
|
|
84
86
|
requirements:
|
|
85
87
|
- - ">="
|
|
@@ -89,11 +91,11 @@ dependencies:
|
|
|
89
91
|
- 0
|
|
90
92
|
version: "0"
|
|
91
93
|
name: yard
|
|
92
|
-
|
|
93
|
-
type: :development
|
|
94
|
-
requirement: *id005
|
|
94
|
+
version_requirements: *id005
|
|
95
95
|
- !ruby/object:Gem::Dependency
|
|
96
|
-
|
|
96
|
+
type: :development
|
|
97
|
+
prerelease: false
|
|
98
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
|
97
99
|
none: false
|
|
98
100
|
requirements:
|
|
99
101
|
- - ~>
|
|
@@ -104,11 +106,11 @@ dependencies:
|
|
|
104
106
|
- 0
|
|
105
107
|
version: "2.0"
|
|
106
108
|
name: rspec
|
|
107
|
-
|
|
108
|
-
type: :development
|
|
109
|
-
requirement: *id006
|
|
109
|
+
version_requirements: *id006
|
|
110
110
|
- !ruby/object:Gem::Dependency
|
|
111
|
-
|
|
111
|
+
type: :development
|
|
112
|
+
prerelease: false
|
|
113
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
|
112
114
|
none: false
|
|
113
115
|
requirements:
|
|
114
116
|
- - ">="
|
|
@@ -118,11 +120,11 @@ dependencies:
|
|
|
118
120
|
- 0
|
|
119
121
|
version: "0"
|
|
120
122
|
name: bundler
|
|
121
|
-
|
|
122
|
-
type: :development
|
|
123
|
-
requirement: *id007
|
|
123
|
+
version_requirements: *id007
|
|
124
124
|
- !ruby/object:Gem::Dependency
|
|
125
|
-
|
|
125
|
+
type: :development
|
|
126
|
+
prerelease: false
|
|
127
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
|
126
128
|
none: false
|
|
127
129
|
requirements:
|
|
128
130
|
- - ">="
|
|
@@ -132,11 +134,11 @@ dependencies:
|
|
|
132
134
|
- 0
|
|
133
135
|
version: "0"
|
|
134
136
|
name: jeweler
|
|
135
|
-
|
|
136
|
-
type: :development
|
|
137
|
-
requirement: *id008
|
|
137
|
+
version_requirements: *id008
|
|
138
138
|
- !ruby/object:Gem::Dependency
|
|
139
|
-
|
|
139
|
+
type: :development
|
|
140
|
+
prerelease: false
|
|
141
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
|
140
142
|
none: false
|
|
141
143
|
requirements:
|
|
142
144
|
- - ">="
|
|
@@ -146,11 +148,11 @@ dependencies:
|
|
|
146
148
|
- 0
|
|
147
149
|
version: "0"
|
|
148
150
|
name: rcov
|
|
149
|
-
|
|
150
|
-
type: :development
|
|
151
|
-
requirement: *id009
|
|
151
|
+
version_requirements: *id009
|
|
152
152
|
- !ruby/object:Gem::Dependency
|
|
153
|
-
|
|
153
|
+
type: :development
|
|
154
|
+
prerelease: false
|
|
155
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
|
154
156
|
none: false
|
|
155
157
|
requirements:
|
|
156
158
|
- - ">="
|
|
@@ -160,11 +162,11 @@ dependencies:
|
|
|
160
162
|
- 0
|
|
161
163
|
version: "0"
|
|
162
164
|
name: flog
|
|
163
|
-
|
|
164
|
-
type: :development
|
|
165
|
-
requirement: *id010
|
|
165
|
+
version_requirements: *id010
|
|
166
166
|
- !ruby/object:Gem::Dependency
|
|
167
|
-
|
|
167
|
+
type: :development
|
|
168
|
+
prerelease: false
|
|
169
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
|
168
170
|
none: false
|
|
169
171
|
requirements:
|
|
170
172
|
- - ">="
|
|
@@ -174,11 +176,11 @@ dependencies:
|
|
|
174
176
|
- 0
|
|
175
177
|
version: "0"
|
|
176
178
|
name: ZenTest
|
|
177
|
-
|
|
178
|
-
type: :development
|
|
179
|
-
requirement: *id011
|
|
179
|
+
version_requirements: *id011
|
|
180
180
|
- !ruby/object:Gem::Dependency
|
|
181
|
-
|
|
181
|
+
type: :development
|
|
182
|
+
prerelease: false
|
|
183
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
|
182
184
|
none: false
|
|
183
185
|
requirements:
|
|
184
186
|
- - ">="
|
|
@@ -188,9 +190,7 @@ dependencies:
|
|
|
188
190
|
- 0
|
|
189
191
|
version: "0"
|
|
190
192
|
name: timecop
|
|
191
|
-
|
|
192
|
-
type: :development
|
|
193
|
-
requirement: *id012
|
|
193
|
+
version_requirements: *id012
|
|
194
194
|
description: Simple Data Warehouse toolkit for ruby
|
|
195
195
|
email: roland.swingler@gmail.com
|
|
196
196
|
executables: []
|
|
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
292
292
|
requirements: []
|
|
293
293
|
|
|
294
294
|
rubyforge_project:
|
|
295
|
-
rubygems_version: 1.8.
|
|
295
|
+
rubygems_version: 1.8.15
|
|
296
296
|
signing_key:
|
|
297
297
|
specification_version: 3
|
|
298
298
|
summary: Ruby Data Warehousing
|