active_reporting 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -8
- data/CHANGELOG.md +19 -0
- data/Gemfile +4 -2
- data/README.md +15 -10
- data/lib/active_reporting/active_record_adaptor.rb +1 -1
- data/lib/active_reporting/fact_model.rb +4 -4
- data/lib/active_reporting/report.rb +1 -1
- data/lib/active_reporting/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a42a126d95b11825c31edc43efd23fb483238266
|
4
|
+
data.tar.gz: 1679cf35f25aeee3f40117ffce4d4b4fdf8be499
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2eb0fba1d05b5f482716db8cd47cf165546c35533e061a46d55abc8708359b3ba3f0812db60d68b85cf1375554f25037a6e83ff231db1e988d4b6014e2198431
|
7
|
+
data.tar.gz: d2d2be2376f03a9590142bd732369426510c7f0916bc432f42e82c14e4dcff406a726a8de53ae2a4d7774b8f39e93c3485c54236eafd244dcf8a022a3494f609
|
data/.travis.yml
CHANGED
@@ -5,20 +5,15 @@ rvm:
|
|
5
5
|
- 2.3.4
|
6
6
|
- 2.4.1
|
7
7
|
env:
|
8
|
+
- RAILS=5-1 DB=sqlite
|
9
|
+
- RAILS=5-1 DB=pg
|
10
|
+
- RAILS=5-1 DB=mysql
|
8
11
|
- RAILS=5-0 DB=sqlite
|
9
12
|
- RAILS=5-0 DB=pg
|
10
13
|
- RAILS=5-0 DB=mysql
|
11
14
|
- RAILS=4-2 DB=sqlite
|
12
15
|
- RAILS=4-2 DB=pg
|
13
16
|
- RAILS=4-2 DB=mysql
|
14
|
-
matrix:
|
15
|
-
exclude:
|
16
|
-
- rvm: 2.2.7
|
17
|
-
env: RAILS=5-0 DB=sqlite
|
18
|
-
- rvm: 2.2.7
|
19
|
-
env: RAILS=5-0 DB=pg
|
20
|
-
- rvm: 2.2.7
|
21
|
-
env: RAILS=5-0 DB=mysql
|
22
17
|
before_script:
|
23
18
|
- psql -c 'create database active_reporting_test;' -U postgres
|
24
19
|
- mysql -e 'create database active_reporting_test collate utf8_general_ci;'
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,25 @@
|
|
1
|
+
## 0.2.0 (2017-06-17)
|
2
|
+
|
3
|
+
### Breaking Changes
|
4
|
+
|
5
|
+
* `FactModel.use_model` renamed to `FactModel.model=`
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
|
9
|
+
* `metric` lives on fact model and not metric (#3) - *Michael Wheeler (wheeyls)*
|
10
|
+
|
11
|
+
### Misc
|
12
|
+
|
13
|
+
* Readme corrections and updates (#2) - *Michael Wheeler (wheeyls)*
|
14
|
+
|
1
15
|
## 0.1.1 (2017-04-22)
|
2
16
|
|
17
|
+
### Bug Fixes
|
18
|
+
|
3
19
|
* Fix MySQL querying
|
20
|
+
|
21
|
+
### Misc
|
22
|
+
|
4
23
|
* Properly test against multiple dbs and versions of ActiveRecord in CI
|
5
24
|
|
6
25
|
## 0.1.0 (2017-04-16)
|
data/Gemfile
CHANGED
@@ -4,11 +4,13 @@ gemspec
|
|
4
4
|
|
5
5
|
gem 'simplecov', require: false
|
6
6
|
|
7
|
-
rails = ENV['RAILS'] || '5-
|
7
|
+
rails = ENV['RAILS'] || '5-1'
|
8
8
|
|
9
9
|
case rails
|
10
10
|
when '4-2'
|
11
11
|
gem 'activerecord', '~> 4.2.0'
|
12
|
-
|
12
|
+
when '5-0'
|
13
13
|
gem 'activerecord', '~> 5.0.0'
|
14
|
+
else
|
15
|
+
gem 'activerecord', '~> 5.1.0'
|
14
16
|
end
|
data/README.md
CHANGED
@@ -37,6 +37,7 @@ ROLAP uses a set of terms to describe how a report is generated. ActiveReporting
|
|
37
37
|
A fact table is the primary table where information is derived from in a report. It commonly contains fact columns (usually numeric values) and dimension columns (foreign keys to other tables or values that can be grouped together).
|
38
38
|
|
39
39
|
SQL Equivalent: FROM
|
40
|
+
|
40
41
|
Rails: ActiveRecord model
|
41
42
|
|
42
43
|
### Dimension
|
@@ -49,6 +50,7 @@ Examples:
|
|
49
50
|
* The manufacture on a fact table of widgets
|
50
51
|
|
51
52
|
SQL Equivalent: JOIN, GROUP BY
|
53
|
+
|
52
54
|
Rails: ActiveRecord relation or attribute
|
53
55
|
|
54
56
|
### Dimension Hierarchy
|
@@ -71,6 +73,7 @@ Examples:
|
|
71
73
|
This isn't really an official term, but I like using it to describe further filtering of dimensionable data.
|
72
74
|
|
73
75
|
SQL Equivalent: WHERE
|
76
|
+
|
74
77
|
Rails: `where()`, scopes, etc.
|
75
78
|
|
76
79
|
### Measure
|
@@ -82,6 +85,7 @@ Examples:
|
|
82
85
|
* Number of units used in a transaction
|
83
86
|
|
84
87
|
SQL Equivalent: Column in the fact table used in an aggregation function
|
88
|
+
|
85
89
|
Rails: ActiveRecord attribute
|
86
90
|
|
87
91
|
### Metric
|
@@ -89,6 +93,7 @@ Rails: ActiveRecord attribute
|
|
89
93
|
A metric is a measured value and the subject of the report. It is the result of *the* question you want answered.
|
90
94
|
|
91
95
|
SQL Equivalent: A query result
|
96
|
+
|
92
97
|
Rails: The result of an ActiveRecord query
|
93
98
|
|
94
99
|
### Star Schema
|
@@ -147,20 +152,20 @@ Every fact model links to an ActiveRecord model. This is done either by naming c
|
|
147
152
|
This naming convention is `[ModelName]FactModel`. Meaning if you have an ActiveRecord model named `Ticket`, you'll then have a `TicketFactModel` to link them together.
|
148
153
|
|
149
154
|
```ruby
|
150
|
-
class TicketFactModel <
|
155
|
+
class TicketFactModel < ActiveReporting::FactModel
|
151
156
|
|
152
157
|
end
|
153
158
|
```
|
154
159
|
|
155
|
-
Alternatively, you may manually specify the model manually with `
|
160
|
+
Alternatively, you may manually specify the model manually with `self.model=`
|
156
161
|
|
157
162
|
```ruby
|
158
|
-
class TicketFactModel <
|
159
|
-
|
163
|
+
class TicketFactModel < ActiveReporting::FactModel
|
164
|
+
self.model= SomeOtherModel
|
160
165
|
# OR you may pass in a string or symbol
|
161
|
-
#
|
162
|
-
#
|
163
|
-
#
|
166
|
+
# self.model= :some_other_model
|
167
|
+
# self.model= 'some_other_model'
|
168
|
+
# self.model= 'SomeOtherModel'
|
164
169
|
end
|
165
170
|
```
|
166
171
|
|
@@ -170,7 +175,7 @@ ActiveReporting assumes the column of a fact model used for summing, averaging,
|
|
170
175
|
|
171
176
|
```ruby
|
172
177
|
class OrderFactModel < ActiveReporting::FactModel
|
173
|
-
measure = :total
|
178
|
+
self.measure = :total
|
174
179
|
end
|
175
180
|
```
|
176
181
|
|
@@ -258,7 +263,7 @@ my_metric = ActiveReporting::Metric.new(
|
|
258
263
|
|
259
264
|
`aggregate` - The SQL aggregate used to calculate the metric. Supported aggregates include count, max, min, avg, and sum. (Default: `:count`)
|
260
265
|
|
261
|
-
`dimensions - An array of dimensions used for the metric. When given just a symbol, the default dimension label will be used for the dimension. You may specify a hierarchy level by using a hash. (Examples: `[:sales_rep, {order_date: :month}]`)
|
266
|
+
`dimensions` - An array of dimensions used for the metric. When given just a symbol, the default dimension label will be used for the dimension. You may specify a hierarchy level by using a hash. (Examples: `[:sales_rep, {order_date: :month}]`)
|
262
267
|
|
263
268
|
`dimension_filter` - A hash were the keys are dimension filter names and the values are the values passed into the filter.
|
264
269
|
|
@@ -278,7 +283,7 @@ metric = ActiveReporting::Metric.new(
|
|
278
283
|
dimension_filter: {months_ago: 1}
|
279
284
|
)
|
280
285
|
|
281
|
-
report = ActiveReporting.new(metric)
|
286
|
+
report = ActiveReporting::Report.new(metric)
|
282
287
|
report.run
|
283
288
|
=> [{order_count: 12, sales_rep: 'Fred Jones', sales_rep_identifier: 123},{order_count: 17, sales_rep: 'Mary Sue', sales_rep_identifier: 123}]
|
284
289
|
```
|
@@ -15,11 +15,11 @@ module ActiveReporting
|
|
15
15
|
#
|
16
16
|
# @example
|
17
17
|
# class PostFactModel < ActiveReporting::FactModel
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
18
|
+
# self.model= :post
|
19
|
+
# self.model= Post
|
20
|
+
# self.model= 'post'
|
21
21
|
# end
|
22
|
-
def self.
|
22
|
+
def self.model=(model)
|
23
23
|
@model = if model.is_a?(String) || model.is_a?(Symbol)
|
24
24
|
model.to_s.classify.constantize
|
25
25
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_reporting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Drake
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|