martyr 0.1.74.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.tags +868 -0
  7. data/.travis.yml +3 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +265 -0
  11. data/Rakefile +1 -0
  12. data/TODO.txt +54 -0
  13. data/bin/console +62 -0
  14. data/bin/setup +7 -0
  15. data/lib/martyr/base_cube.rb +73 -0
  16. data/lib/martyr/cube.rb +134 -0
  17. data/lib/martyr/dimension_reference.rb +26 -0
  18. data/lib/martyr/errors.rb +20 -0
  19. data/lib/martyr/helpers/delegators.rb +17 -0
  20. data/lib/martyr/helpers/intervals.rb +222 -0
  21. data/lib/martyr/helpers/metric_id_standardizer.rb +47 -0
  22. data/lib/martyr/helpers/registrable.rb +15 -0
  23. data/lib/martyr/helpers/sorter.rb +79 -0
  24. data/lib/martyr/helpers/translations.rb +34 -0
  25. data/lib/martyr/level_concern/has_level_collection.rb +11 -0
  26. data/lib/martyr/level_concern/level.rb +45 -0
  27. data/lib/martyr/level_concern/level_collection.rb +60 -0
  28. data/lib/martyr/level_concern/level_comparator.rb +45 -0
  29. data/lib/martyr/level_concern/level_definitions_by_dimension.rb +24 -0
  30. data/lib/martyr/runtime/data_set/coordinates.rb +108 -0
  31. data/lib/martyr/runtime/data_set/element.rb +66 -0
  32. data/lib/martyr/runtime/data_set/element_common.rb +51 -0
  33. data/lib/martyr/runtime/data_set/element_locator.rb +143 -0
  34. data/lib/martyr/runtime/data_set/fact.rb +83 -0
  35. data/lib/martyr/runtime/data_set/fact_indexer.rb +72 -0
  36. data/lib/martyr/runtime/data_set/future_fact_value.rb +58 -0
  37. data/lib/martyr/runtime/data_set/future_metric.rb +40 -0
  38. data/lib/martyr/runtime/data_set/virtual_element.rb +131 -0
  39. data/lib/martyr/runtime/data_set/virtual_elements_builder.rb +202 -0
  40. data/lib/martyr/runtime/dimension_scopes/base_level_scope.rb +20 -0
  41. data/lib/martyr/runtime/dimension_scopes/degenerate_level_scope.rb +76 -0
  42. data/lib/martyr/runtime/dimension_scopes/dimension_scope_collection.rb +78 -0
  43. data/lib/martyr/runtime/dimension_scopes/level_scope_collection.rb +20 -0
  44. data/lib/martyr/runtime/dimension_scopes/query_level_scope.rb +223 -0
  45. data/lib/martyr/runtime/fact_scopes/base_fact_scope.rb +62 -0
  46. data/lib/martyr/runtime/fact_scopes/fact_scope_collection.rb +127 -0
  47. data/lib/martyr/runtime/fact_scopes/main_fact_scope.rb +7 -0
  48. data/lib/martyr/runtime/fact_scopes/null_scope.rb +7 -0
  49. data/lib/martyr/runtime/fact_scopes/sub_fact_scope.rb +16 -0
  50. data/lib/martyr/runtime/fact_scopes/wrapped_fact_scope.rb +11 -0
  51. data/lib/martyr/runtime/pivot/pivot_axis.rb +67 -0
  52. data/lib/martyr/runtime/pivot/pivot_cell.rb +54 -0
  53. data/lib/martyr/runtime/pivot/pivot_grain_element.rb +22 -0
  54. data/lib/martyr/runtime/pivot/pivot_row.rb +49 -0
  55. data/lib/martyr/runtime/pivot/pivot_table.rb +109 -0
  56. data/lib/martyr/runtime/pivot/pivot_table_builder.rb +125 -0
  57. data/lib/martyr/runtime/query/metric_dependency_resolver.rb +149 -0
  58. data/lib/martyr/runtime/query/query_context.rb +246 -0
  59. data/lib/martyr/runtime/query/query_context_builder.rb +215 -0
  60. data/lib/martyr/runtime/scope_operators/base_operator.rb +113 -0
  61. data/lib/martyr/runtime/scope_operators/group_operator.rb +18 -0
  62. data/lib/martyr/runtime/scope_operators/select_operator_for_dimension.rb +24 -0
  63. data/lib/martyr/runtime/scope_operators/select_operator_for_metric.rb +35 -0
  64. data/lib/martyr/runtime/scope_operators/where_operator_for_dimension.rb +43 -0
  65. data/lib/martyr/runtime/scope_operators/where_operator_for_metric.rb +25 -0
  66. data/lib/martyr/runtime/slices/data_slices/data_slice.rb +70 -0
  67. data/lib/martyr/runtime/slices/data_slices/metric_data_slice.rb +54 -0
  68. data/lib/martyr/runtime/slices/data_slices/plain_dimension_data_slice.rb +109 -0
  69. data/lib/martyr/runtime/slices/data_slices/time_dimension_data_slice.rb +9 -0
  70. data/lib/martyr/runtime/slices/has_scoped_levels.rb +29 -0
  71. data/lib/martyr/runtime/slices/memory_slices/TO_DELETE.md +188 -0
  72. data/lib/martyr/runtime/slices/memory_slices/memory_slice.rb +84 -0
  73. data/lib/martyr/runtime/slices/memory_slices/metric_memory_slice.rb +59 -0
  74. data/lib/martyr/runtime/slices/memory_slices/plain_dimension_memory_slice.rb +48 -0
  75. data/lib/martyr/runtime/slices/scopeable_slice_data.rb +73 -0
  76. data/lib/martyr/runtime/slices/slice_definitions/base_slice_definition.rb +30 -0
  77. data/lib/martyr/runtime/slices/slice_definitions/metric_slice_definition.rb +120 -0
  78. data/lib/martyr/runtime/slices/slice_definitions/plain_dimension_level_slice_definition.rb +26 -0
  79. data/lib/martyr/runtime/sub_cubes/fact_filler_strategies.rb +61 -0
  80. data/lib/martyr/runtime/sub_cubes/query_metrics.rb +56 -0
  81. data/lib/martyr/runtime/sub_cubes/sub_cube.rb +134 -0
  82. data/lib/martyr/runtime/sub_cubes/sub_cube_grain.rb +117 -0
  83. data/lib/martyr/schema/dimension_associations/dimension_association_collection.rb +33 -0
  84. data/lib/martyr/schema/dimension_associations/level_association.rb +37 -0
  85. data/lib/martyr/schema/dimension_associations/level_association_collection.rb +18 -0
  86. data/lib/martyr/schema/dimensions/dimension_definition_collection.rb +39 -0
  87. data/lib/martyr/schema/dimensions/plain_dimension_definition.rb +39 -0
  88. data/lib/martyr/schema/dimensions/time_dimension_definition.rb +24 -0
  89. data/lib/martyr/schema/facts/base_fact_definition.rb +22 -0
  90. data/lib/martyr/schema/facts/fact_definition_collection.rb +44 -0
  91. data/lib/martyr/schema/facts/main_fact_definition.rb +45 -0
  92. data/lib/martyr/schema/facts/sub_fact_definition.rb +44 -0
  93. data/lib/martyr/schema/metrics/base_metric.rb +77 -0
  94. data/lib/martyr/schema/metrics/built_in_metric.rb +38 -0
  95. data/lib/martyr/schema/metrics/count_distinct_metric.rb +172 -0
  96. data/lib/martyr/schema/metrics/custom_metric.rb +26 -0
  97. data/lib/martyr/schema/metrics/custom_rollup.rb +31 -0
  98. data/lib/martyr/schema/metrics/dependency_inferrer.rb +150 -0
  99. data/lib/martyr/schema/metrics/metric_definition_collection.rb +94 -0
  100. data/lib/martyr/schema/named_scopes/named_scope.rb +19 -0
  101. data/lib/martyr/schema/named_scopes/named_scope_collection.rb +42 -0
  102. data/lib/martyr/schema/plain_dimension_levels/base_level_definition.rb +39 -0
  103. data/lib/martyr/schema/plain_dimension_levels/degenerate_level_definition.rb +75 -0
  104. data/lib/martyr/schema/plain_dimension_levels/level_definition_collection.rb +15 -0
  105. data/lib/martyr/schema/plain_dimension_levels/query_level_definition.rb +99 -0
  106. data/lib/martyr/version.rb +3 -0
  107. data/lib/martyr/virtual_cube.rb +74 -0
  108. data/lib/martyr.rb +55 -0
  109. data/martyr.gemspec +41 -0
  110. metadata +296 -0
metadata ADDED
@@ -0,0 +1,296 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: martyr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.74.pre
5
+ platform: ruby
6
+ authors:
7
+ - Amit Aharoni
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-02-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: chinook_database
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.10'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.10'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-byebug
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.3'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.3'
125
+ - !ruby/object:Gem::Dependency
126
+ name: activesupport
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '4.2'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.2'
139
+ - !ruby/object:Gem::Dependency
140
+ name: activemodel
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '4.2'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '4.2'
153
+ description: A multi-dimensional semantic layer on top of ActiveRecord that allows
154
+ running pivot table queries and rendering them as CSV, HTML, or KickChart-ready
155
+ hashes. Supports time dimensions, cohort analysis, custom rollups, and drilling
156
+ through to the underlying ActiveRecord objects.
157
+ email:
158
+ - amit.sites@gmail.com
159
+ executables: []
160
+ extensions: []
161
+ extra_rdoc_files: []
162
+ files:
163
+ - ".gitignore"
164
+ - ".rspec"
165
+ - ".ruby-gemset"
166
+ - ".ruby-version"
167
+ - ".tags"
168
+ - ".travis.yml"
169
+ - Gemfile
170
+ - LICENSE.txt
171
+ - README.md
172
+ - Rakefile
173
+ - TODO.txt
174
+ - bin/console
175
+ - bin/setup
176
+ - lib/martyr.rb
177
+ - lib/martyr/base_cube.rb
178
+ - lib/martyr/cube.rb
179
+ - lib/martyr/dimension_reference.rb
180
+ - lib/martyr/errors.rb
181
+ - lib/martyr/helpers/delegators.rb
182
+ - lib/martyr/helpers/intervals.rb
183
+ - lib/martyr/helpers/metric_id_standardizer.rb
184
+ - lib/martyr/helpers/registrable.rb
185
+ - lib/martyr/helpers/sorter.rb
186
+ - lib/martyr/helpers/translations.rb
187
+ - lib/martyr/level_concern/has_level_collection.rb
188
+ - lib/martyr/level_concern/level.rb
189
+ - lib/martyr/level_concern/level_collection.rb
190
+ - lib/martyr/level_concern/level_comparator.rb
191
+ - lib/martyr/level_concern/level_definitions_by_dimension.rb
192
+ - lib/martyr/runtime/data_set/coordinates.rb
193
+ - lib/martyr/runtime/data_set/element.rb
194
+ - lib/martyr/runtime/data_set/element_common.rb
195
+ - lib/martyr/runtime/data_set/element_locator.rb
196
+ - lib/martyr/runtime/data_set/fact.rb
197
+ - lib/martyr/runtime/data_set/fact_indexer.rb
198
+ - lib/martyr/runtime/data_set/future_fact_value.rb
199
+ - lib/martyr/runtime/data_set/future_metric.rb
200
+ - lib/martyr/runtime/data_set/virtual_element.rb
201
+ - lib/martyr/runtime/data_set/virtual_elements_builder.rb
202
+ - lib/martyr/runtime/dimension_scopes/base_level_scope.rb
203
+ - lib/martyr/runtime/dimension_scopes/degenerate_level_scope.rb
204
+ - lib/martyr/runtime/dimension_scopes/dimension_scope_collection.rb
205
+ - lib/martyr/runtime/dimension_scopes/level_scope_collection.rb
206
+ - lib/martyr/runtime/dimension_scopes/query_level_scope.rb
207
+ - lib/martyr/runtime/fact_scopes/base_fact_scope.rb
208
+ - lib/martyr/runtime/fact_scopes/fact_scope_collection.rb
209
+ - lib/martyr/runtime/fact_scopes/main_fact_scope.rb
210
+ - lib/martyr/runtime/fact_scopes/null_scope.rb
211
+ - lib/martyr/runtime/fact_scopes/sub_fact_scope.rb
212
+ - lib/martyr/runtime/fact_scopes/wrapped_fact_scope.rb
213
+ - lib/martyr/runtime/pivot/pivot_axis.rb
214
+ - lib/martyr/runtime/pivot/pivot_cell.rb
215
+ - lib/martyr/runtime/pivot/pivot_grain_element.rb
216
+ - lib/martyr/runtime/pivot/pivot_row.rb
217
+ - lib/martyr/runtime/pivot/pivot_table.rb
218
+ - lib/martyr/runtime/pivot/pivot_table_builder.rb
219
+ - lib/martyr/runtime/query/metric_dependency_resolver.rb
220
+ - lib/martyr/runtime/query/query_context.rb
221
+ - lib/martyr/runtime/query/query_context_builder.rb
222
+ - lib/martyr/runtime/scope_operators/base_operator.rb
223
+ - lib/martyr/runtime/scope_operators/group_operator.rb
224
+ - lib/martyr/runtime/scope_operators/select_operator_for_dimension.rb
225
+ - lib/martyr/runtime/scope_operators/select_operator_for_metric.rb
226
+ - lib/martyr/runtime/scope_operators/where_operator_for_dimension.rb
227
+ - lib/martyr/runtime/scope_operators/where_operator_for_metric.rb
228
+ - lib/martyr/runtime/slices/data_slices/data_slice.rb
229
+ - lib/martyr/runtime/slices/data_slices/metric_data_slice.rb
230
+ - lib/martyr/runtime/slices/data_slices/plain_dimension_data_slice.rb
231
+ - lib/martyr/runtime/slices/data_slices/time_dimension_data_slice.rb
232
+ - lib/martyr/runtime/slices/has_scoped_levels.rb
233
+ - lib/martyr/runtime/slices/memory_slices/TO_DELETE.md
234
+ - lib/martyr/runtime/slices/memory_slices/memory_slice.rb
235
+ - lib/martyr/runtime/slices/memory_slices/metric_memory_slice.rb
236
+ - lib/martyr/runtime/slices/memory_slices/plain_dimension_memory_slice.rb
237
+ - lib/martyr/runtime/slices/scopeable_slice_data.rb
238
+ - lib/martyr/runtime/slices/slice_definitions/base_slice_definition.rb
239
+ - lib/martyr/runtime/slices/slice_definitions/metric_slice_definition.rb
240
+ - lib/martyr/runtime/slices/slice_definitions/plain_dimension_level_slice_definition.rb
241
+ - lib/martyr/runtime/sub_cubes/fact_filler_strategies.rb
242
+ - lib/martyr/runtime/sub_cubes/query_metrics.rb
243
+ - lib/martyr/runtime/sub_cubes/sub_cube.rb
244
+ - lib/martyr/runtime/sub_cubes/sub_cube_grain.rb
245
+ - lib/martyr/schema/dimension_associations/dimension_association_collection.rb
246
+ - lib/martyr/schema/dimension_associations/level_association.rb
247
+ - lib/martyr/schema/dimension_associations/level_association_collection.rb
248
+ - lib/martyr/schema/dimensions/dimension_definition_collection.rb
249
+ - lib/martyr/schema/dimensions/plain_dimension_definition.rb
250
+ - lib/martyr/schema/dimensions/time_dimension_definition.rb
251
+ - lib/martyr/schema/facts/base_fact_definition.rb
252
+ - lib/martyr/schema/facts/fact_definition_collection.rb
253
+ - lib/martyr/schema/facts/main_fact_definition.rb
254
+ - lib/martyr/schema/facts/sub_fact_definition.rb
255
+ - lib/martyr/schema/metrics/base_metric.rb
256
+ - lib/martyr/schema/metrics/built_in_metric.rb
257
+ - lib/martyr/schema/metrics/count_distinct_metric.rb
258
+ - lib/martyr/schema/metrics/custom_metric.rb
259
+ - lib/martyr/schema/metrics/custom_rollup.rb
260
+ - lib/martyr/schema/metrics/dependency_inferrer.rb
261
+ - lib/martyr/schema/metrics/metric_definition_collection.rb
262
+ - lib/martyr/schema/named_scopes/named_scope.rb
263
+ - lib/martyr/schema/named_scopes/named_scope_collection.rb
264
+ - lib/martyr/schema/plain_dimension_levels/base_level_definition.rb
265
+ - lib/martyr/schema/plain_dimension_levels/degenerate_level_definition.rb
266
+ - lib/martyr/schema/plain_dimension_levels/level_definition_collection.rb
267
+ - lib/martyr/schema/plain_dimension_levels/query_level_definition.rb
268
+ - lib/martyr/version.rb
269
+ - lib/martyr/virtual_cube.rb
270
+ - martyr.gemspec
271
+ homepage: https://github.com/vaharoni/martyr
272
+ licenses:
273
+ - MIT
274
+ metadata:
275
+ allowed_push_host: https://rubygems.org
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ required_rubygems_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">"
288
+ - !ruby/object:Gem::Version
289
+ version: 1.3.1
290
+ requirements: []
291
+ rubyforge_project:
292
+ rubygems_version: 2.4.8
293
+ signing_key:
294
+ specification_version: 4
295
+ summary: Add data mart and pivoting functionality to Active Record models
296
+ test_files: []