active_reporting 0.1.1 → 0.2.0
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.
- 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
|