mainej-activewarehouse 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/activewarehouse/README +99 -0
- data/activewarehouse/Rakefile +165 -0
- data/activewarehouse/TODO +4 -0
- data/activewarehouse/db/migrations/001_create_table_reports.rb +28 -0
- data/activewarehouse/doc/references.txt +4 -0
- data/activewarehouse/generators/bridge/USAGE +1 -0
- data/activewarehouse/generators/bridge/bridge_generator.rb +46 -0
- data/activewarehouse/generators/bridge/templates/fixture.yml +5 -0
- data/activewarehouse/generators/bridge/templates/migration.rb +27 -0
- data/activewarehouse/generators/bridge/templates/model.rb +3 -0
- data/activewarehouse/generators/bridge/templates/unit_test.rb +8 -0
- data/activewarehouse/generators/cube/USAGE +1 -0
- data/activewarehouse/generators/cube/cube_generator.rb +28 -0
- data/activewarehouse/generators/cube/templates/model.rb +3 -0
- data/activewarehouse/generators/cube/templates/unit_test.rb +8 -0
- data/activewarehouse/generators/date_dimension/USAGE +1 -0
- data/activewarehouse/generators/date_dimension/date_dimension_generator.rb +16 -0
- data/activewarehouse/generators/date_dimension/templates/fixture.yml +5 -0
- data/activewarehouse/generators/date_dimension/templates/migration.rb +31 -0
- data/activewarehouse/generators/date_dimension/templates/model.rb +3 -0
- data/activewarehouse/generators/date_dimension/templates/unit_test.rb +8 -0
- data/activewarehouse/generators/dimension/USAGE +1 -0
- data/activewarehouse/generators/dimension/dimension_generator.rb +46 -0
- data/activewarehouse/generators/dimension/templates/fixture.yml +5 -0
- data/activewarehouse/generators/dimension/templates/migration.rb +11 -0
- data/activewarehouse/generators/dimension/templates/model.rb +3 -0
- data/activewarehouse/generators/dimension/templates/unit_test.rb +8 -0
- data/activewarehouse/generators/dimension_view/USAGE +1 -0
- data/activewarehouse/generators/dimension_view/dimension_view_generator.rb +62 -0
- data/activewarehouse/generators/dimension_view/templates/migration.rb +17 -0
- data/activewarehouse/generators/dimension_view/templates/model.rb +3 -0
- data/activewarehouse/generators/dimension_view/templates/unit_test.rb +10 -0
- data/activewarehouse/generators/fact/USAGE +1 -0
- data/activewarehouse/generators/fact/fact_generator.rb +46 -0
- data/activewarehouse/generators/fact/templates/fixture.yml +5 -0
- data/activewarehouse/generators/fact/templates/migration.rb +13 -0
- data/activewarehouse/generators/fact/templates/model.rb +3 -0
- data/activewarehouse/generators/fact/templates/unit_test.rb +10 -0
- data/activewarehouse/generators/time_dimension/USAGE +1 -0
- data/activewarehouse/generators/time_dimension/templates/fixture.yml +5 -0
- data/activewarehouse/generators/time_dimension/templates/migration.rb +12 -0
- data/activewarehouse/generators/time_dimension/templates/model.rb +3 -0
- data/activewarehouse/generators/time_dimension/templates/unit_test.rb +8 -0
- data/activewarehouse/generators/time_dimension/time_dimension_generator.rb +14 -0
- data/activewarehouse/init.rb +1 -0
- data/activewarehouse/install.rb +5 -0
- data/activewarehouse/lib/active_warehouse.rb +91 -0
- data/activewarehouse/lib/active_warehouse/aggregate.rb +75 -0
- data/activewarehouse/lib/active_warehouse/aggregate/dwarf_aggregate.rb +369 -0
- data/activewarehouse/lib/active_warehouse/aggregate/dwarf_common.rb +44 -0
- data/activewarehouse/lib/active_warehouse/aggregate/dwarf_printer.rb +34 -0
- data/activewarehouse/lib/active_warehouse/aggregate/no_aggregate.rb +212 -0
- data/activewarehouse/lib/active_warehouse/aggregate/pid_aggregate.rb +29 -0
- data/activewarehouse/lib/active_warehouse/aggregate_field.rb +59 -0
- data/activewarehouse/lib/active_warehouse/bridge.rb +19 -0
- data/activewarehouse/lib/active_warehouse/bridge/hierarchy_bridge.rb +46 -0
- data/activewarehouse/lib/active_warehouse/builder.rb +3 -0
- data/activewarehouse/lib/active_warehouse/builder/date_dimension_builder.rb +91 -0
- data/activewarehouse/lib/active_warehouse/builder/generator/generator.rb +13 -0
- data/activewarehouse/lib/active_warehouse/builder/generator/name_generator.rb +20 -0
- data/activewarehouse/lib/active_warehouse/builder/generator/paragraph_generator.rb +11 -0
- data/activewarehouse/lib/active_warehouse/builder/random_data_builder.rb +239 -0
- data/activewarehouse/lib/active_warehouse/builder/test_data_builder.rb +54 -0
- data/activewarehouse/lib/active_warehouse/calculated_field.rb +27 -0
- data/activewarehouse/lib/active_warehouse/compat/compat.rb +49 -0
- data/activewarehouse/lib/active_warehouse/core_ext.rb +1 -0
- data/activewarehouse/lib/active_warehouse/core_ext/time.rb +5 -0
- data/activewarehouse/lib/active_warehouse/core_ext/time/calculations.rb +40 -0
- data/activewarehouse/lib/active_warehouse/cube.rb +235 -0
- data/activewarehouse/lib/active_warehouse/cube_query_result.rb +69 -0
- data/activewarehouse/lib/active_warehouse/dimension.rb +329 -0
- data/activewarehouse/lib/active_warehouse/dimension/date_dimension.rb +15 -0
- data/activewarehouse/lib/active_warehouse/dimension/dimension_reflection.rb +21 -0
- data/activewarehouse/lib/active_warehouse/dimension/dimension_view.rb +27 -0
- data/activewarehouse/lib/active_warehouse/dimension/hierarchical_dimension.rb +99 -0
- data/activewarehouse/lib/active_warehouse/dimension/slowly_changing_dimension.rb +147 -0
- data/activewarehouse/lib/active_warehouse/fact.rb +239 -0
- data/activewarehouse/lib/active_warehouse/field.rb +74 -0
- data/activewarehouse/lib/active_warehouse/migrations.rb +64 -0
- data/activewarehouse/lib/active_warehouse/ordered_hash.rb +34 -0
- data/activewarehouse/lib/active_warehouse/prejoin_fact.rb +97 -0
- data/activewarehouse/lib/active_warehouse/report.rb +7 -0
- data/activewarehouse/lib/active_warehouse/report/abstract_report.rb +149 -0
- data/activewarehouse/lib/active_warehouse/report/chart_report.rb +9 -0
- data/activewarehouse/lib/active_warehouse/report/data_cell.rb +21 -0
- data/activewarehouse/lib/active_warehouse/report/data_column.rb +19 -0
- data/activewarehouse/lib/active_warehouse/report/data_row.rb +15 -0
- data/activewarehouse/lib/active_warehouse/report/dimension.rb +58 -0
- data/activewarehouse/lib/active_warehouse/report/table_report.rb +38 -0
- data/activewarehouse/lib/active_warehouse/version.rb +9 -0
- data/activewarehouse/lib/active_warehouse/view.rb +9 -0
- data/activewarehouse/lib/active_warehouse/view/crumb.rb +64 -0
- data/activewarehouse/lib/active_warehouse/view/report_helper.rb +98 -0
- data/activewarehouse/lib/active_warehouse/view/table_view.rb +134 -0
- data/activewarehouse/lib/active_warehouse/view/yui_adapter.rb +68 -0
- data/activewarehouse/tasks/active_warehouse_tasks.rake +122 -0
- metadata +237 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
module ActiveWarehouse::View
|
2
|
+
module YuiAdapter
|
3
|
+
def yui_column_definitions(table_view)
|
4
|
+
columns = [{:key => 'row_dimension_key', :label => table_view.row_dimension.hierarchy_level.to_s.humanize.titleize, :sortable => true}]
|
5
|
+
table_view.column_dimension.values.each do |col_dim_value|
|
6
|
+
if table_view.column_dimension.has_children?
|
7
|
+
col_label = %Q{<a href="#{url_for(table_view.column_link(col_dim_value))}" onclick="location.href=this.href;" class="yui-dt-link">#{col_dim_value}</a>}
|
8
|
+
else
|
9
|
+
col_label = col_dim_value
|
10
|
+
end
|
11
|
+
column = {:label => col_label}
|
12
|
+
column[:children] = []
|
13
|
+
table_view.fact_attributes.each do |fact_attribute|
|
14
|
+
child_data = {:sortable => true}
|
15
|
+
child_data[:label] = fact_attribute.label.humanize.titleize
|
16
|
+
|
17
|
+
format = table_view.report.format[fact_attribute.name.to_sym]
|
18
|
+
if format && format.is_a?(Symbol)
|
19
|
+
child_data[:formatter] = format
|
20
|
+
end
|
21
|
+
child_data[:key] = "#{col_dim_value}_#{fact_attribute.label}".gsub(' ', '_').downcase
|
22
|
+
column[:children] << child_data
|
23
|
+
end
|
24
|
+
columns << column
|
25
|
+
end
|
26
|
+
columns
|
27
|
+
end
|
28
|
+
|
29
|
+
def yui_data_rows(table_view)
|
30
|
+
data_rows = []
|
31
|
+
table_view.data_rows.each do |data_row|
|
32
|
+
data = {}
|
33
|
+
data[:row_dimension_key] = link_to_if(table_view.row_dimension.has_children?, data_row.dimension_value, table_view.row_link(data_row.dimension_value))
|
34
|
+
data[:row_dimension_label] = data_row.dimension_value
|
35
|
+
|
36
|
+
data_row.cells.each_with_index do |cell, index| # aggregated facts
|
37
|
+
value = cell.raw_value
|
38
|
+
format = table_view.report.format[cell.fact_attribute.name.to_sym]
|
39
|
+
if format && format.is_a?(Proc)
|
40
|
+
value = format.call(cell.raw_value)
|
41
|
+
end
|
42
|
+
|
43
|
+
value = link_to_if((table_view.report.link_cell && column_dimension.has_children? && row_dimension.has_children?), value,
|
44
|
+
table_view.cell_link(cell.column_dimension_value,data_row.dimension_value)
|
45
|
+
)
|
46
|
+
data[cell.key.to_sym] = value
|
47
|
+
end
|
48
|
+
data_rows << data
|
49
|
+
end
|
50
|
+
data_rows
|
51
|
+
end
|
52
|
+
|
53
|
+
def yui_totals_row(table_view)
|
54
|
+
x = ::Builder::XmlMarkup.new
|
55
|
+
x.tr() do |x|
|
56
|
+
x.td do
|
57
|
+
x.div(:class => "yui-dt-liner"){ |x| x << "Grand Totals"}
|
58
|
+
end
|
59
|
+
table_view.data_columns.each_with_index do |column, index|
|
60
|
+
x.td do |x|
|
61
|
+
x.div(:class => "yui-dt-liner"){ |x| x << table_view.column_total(index)}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
x.target!
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
namespace :warehouse do
|
2
|
+
desc "Drop and create the current database"
|
3
|
+
task :recreate => :environment do
|
4
|
+
abcs = ActiveRecord::Base.configurations
|
5
|
+
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
|
6
|
+
puts "Recreating #{ActiveRecord::Base.connection.current_database}"
|
7
|
+
ActiveRecord::Base.connection.recreate_database(ActiveRecord::Base.connection.current_database)
|
8
|
+
ActiveRecord::Base.connection.reconnect!
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Build a 'standard' date dimension"
|
12
|
+
task :build_date_dimension => :environment do
|
13
|
+
abcs = ActiveRecord::Base.configurations
|
14
|
+
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
|
15
|
+
|
16
|
+
start_date = (ENV['START_DATE'] ? Time.parse(ENV['START_DATE']) : Time.now.years_ago(5))
|
17
|
+
end_date = (ENV['END_DATE'] ? Time.parse(ENV['END_DATE']) : Time.now )
|
18
|
+
|
19
|
+
if ENV['TRUNCATE']
|
20
|
+
puts "Truncating date dimension"
|
21
|
+
DateDimension.connection.execute("TRUNCATE TABLE date_dimension")
|
22
|
+
end
|
23
|
+
|
24
|
+
puts "Building date dimension"
|
25
|
+
|
26
|
+
ddb = ActiveWarehouse::Builder::DateDimensionBuilder.new(start_date, end_date)
|
27
|
+
ddb.build.each do |record|
|
28
|
+
dd = DateDimension.new
|
29
|
+
record.each do |key,value|
|
30
|
+
dd.send("#{key}=".to_sym, value) if dd.respond_to?(key)
|
31
|
+
end
|
32
|
+
dd.save!
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "Build random data for all facts and dimensions in the models directory, excluding date"
|
37
|
+
task :build_random_data => :environment do
|
38
|
+
abcs = ActiveRecord::Base.configurations
|
39
|
+
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
|
40
|
+
require 'pp'
|
41
|
+
|
42
|
+
name = ENV['NAME']
|
43
|
+
options = {}
|
44
|
+
options[:truncate] = true if ENV['TRUNCATE']
|
45
|
+
options[:facts] = ENV['FACTS'].to_i if ENV['FACTS']
|
46
|
+
options[:dimensions] = ENV['DIMENSIONS'].to_i if ENV['DIMENSIONS']
|
47
|
+
|
48
|
+
if name
|
49
|
+
build_and_load(name, options)
|
50
|
+
else
|
51
|
+
models_dir = File.join(File.dirname(__FILE__), '../../../../app/models')
|
52
|
+
Dir.glob(File.join(models_dir, "**", "*_dimension.rb")).each do |f|
|
53
|
+
name = File.basename(f, '.rb')
|
54
|
+
next if name == 'date_dimension'
|
55
|
+
options[:rows] = options[:dimensions]
|
56
|
+
build_and_load(name, options)
|
57
|
+
end
|
58
|
+
Dir.glob(File.join(models_dir, "**", "*_fact.rb")).each do |f|
|
59
|
+
name = File.basename(f, '.rb')
|
60
|
+
options[:rows] = options[:facts]
|
61
|
+
build_and_load(name, options)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
desc "Populate with test data"
|
67
|
+
task :populate => [:build_date_dimension, :build_random_data]
|
68
|
+
|
69
|
+
desc "Recreate, migrate and populate"
|
70
|
+
task :setup => [:recreate, :migrate, 'db:migrate', :populate]
|
71
|
+
|
72
|
+
desc "Rebuild the warehouse" # TODO: consider moving this logic somewhere into a class and calling it from here
|
73
|
+
task :rebuild => :environment do
|
74
|
+
puts "Rebuilding data warehouse"
|
75
|
+
# Discover and require all cube models
|
76
|
+
# TODO: do some more research on the potential problems with this
|
77
|
+
models_dir = File.join(File.dirname(__FILE__), '../../../../app/models')
|
78
|
+
Dir.glob(File.join(models_dir, "**", "*.rb")).each do |f|
|
79
|
+
if f =~ /_cube\.rb/
|
80
|
+
require f
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
t = Benchmark.realtime do
|
85
|
+
ActiveWarehouse::Cube.subclasses.each do |subclass|
|
86
|
+
puts "Rebuilding #{subclass}"
|
87
|
+
tc = Benchmark.realtime do
|
88
|
+
subclass.populate(:force => true)
|
89
|
+
end
|
90
|
+
puts "Rebuilt #{subclass} in #{tc}s"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
puts "Data warehouse rebuilt in #{t}s"
|
94
|
+
end
|
95
|
+
|
96
|
+
desc "Migrate ActiveWarehouse"
|
97
|
+
task :migrate => :environment do
|
98
|
+
puts "Migrating ActiveWarehouse"
|
99
|
+
migration_directory = File.join(File.dirname(__FILE__), '../db/migrations')
|
100
|
+
ActiveWarehouse::Migrator.migrate(migration_directory, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def build_and_load(name, options)
|
105
|
+
builder = ActiveWarehouse::Builder::RandomDataBuilder.new
|
106
|
+
|
107
|
+
clazz = name.classify.constantize
|
108
|
+
if options[:truncate] # TODO: Handle through adapter by adding a truncate method to the adapter
|
109
|
+
puts "Truncating #{name}"
|
110
|
+
clazz.connection.execute("TRUNCATE TABLE #{clazz.table_name}")
|
111
|
+
end
|
112
|
+
|
113
|
+
options[:fk_limit] = {}
|
114
|
+
options[:fk_limit]['date_id'] = DateDimension.count
|
115
|
+
|
116
|
+
puts "Building #{name}"
|
117
|
+
builder.build(name, options).each do |record|
|
118
|
+
clazz.create(record)
|
119
|
+
end
|
120
|
+
rescue => e
|
121
|
+
puts "Unable to build #{name}: #{e}"
|
122
|
+
end
|
metadata
ADDED
@@ -0,0 +1,237 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mainej-activewarehouse
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Anthony Eden
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-07-10 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.7.1
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: fastercsv
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.1.0
|
32
|
+
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: activesupport
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.3.1
|
41
|
+
version:
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: activerecord
|
44
|
+
version_requirement:
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 1.14.4
|
50
|
+
version:
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: actionpack
|
53
|
+
version_requirement:
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.12.5
|
59
|
+
version:
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rails_sql_views
|
62
|
+
version_requirement:
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.1.0
|
68
|
+
version:
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: adapter_extensions
|
71
|
+
version_requirement:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.1.0
|
77
|
+
version:
|
78
|
+
description: ActiveWarehouse extends Rails to provide functionality specific for building data warehouses.
|
79
|
+
email: anthonyeden@gmail.com
|
80
|
+
executables: []
|
81
|
+
|
82
|
+
extensions: []
|
83
|
+
|
84
|
+
extra_rdoc_files: []
|
85
|
+
|
86
|
+
files:
|
87
|
+
- activewarehouse/init.rb
|
88
|
+
- activewarehouse/install.rb
|
89
|
+
- activewarehouse/README
|
90
|
+
- activewarehouse/TODO
|
91
|
+
- activewarehouse/Rakefile
|
92
|
+
- activewarehouse/db/migrations
|
93
|
+
- activewarehouse/db/migrations/001_create_table_reports.rb
|
94
|
+
- activewarehouse/doc/references.txt
|
95
|
+
- activewarehouse/generators/bridge
|
96
|
+
- activewarehouse/generators/cube
|
97
|
+
- activewarehouse/generators/date_dimension
|
98
|
+
- activewarehouse/generators/dimension
|
99
|
+
- activewarehouse/generators/dimension_view
|
100
|
+
- activewarehouse/generators/fact
|
101
|
+
- activewarehouse/generators/time_dimension
|
102
|
+
- activewarehouse/generators/bridge/bridge_generator.rb
|
103
|
+
- activewarehouse/generators/bridge/templates
|
104
|
+
- activewarehouse/generators/bridge/USAGE
|
105
|
+
- activewarehouse/generators/bridge/templates/fixture.yml
|
106
|
+
- activewarehouse/generators/bridge/templates/migration.rb
|
107
|
+
- activewarehouse/generators/bridge/templates/model.rb
|
108
|
+
- activewarehouse/generators/bridge/templates/unit_test.rb
|
109
|
+
- activewarehouse/generators/cube/cube_generator.rb
|
110
|
+
- activewarehouse/generators/cube/templates
|
111
|
+
- activewarehouse/generators/cube/USAGE
|
112
|
+
- activewarehouse/generators/cube/templates/model.rb
|
113
|
+
- activewarehouse/generators/cube/templates/unit_test.rb
|
114
|
+
- activewarehouse/generators/date_dimension/date_dimension_generator.rb
|
115
|
+
- activewarehouse/generators/date_dimension/templates
|
116
|
+
- activewarehouse/generators/date_dimension/USAGE
|
117
|
+
- activewarehouse/generators/date_dimension/templates/fixture.yml
|
118
|
+
- activewarehouse/generators/date_dimension/templates/migration.rb
|
119
|
+
- activewarehouse/generators/date_dimension/templates/model.rb
|
120
|
+
- activewarehouse/generators/date_dimension/templates/unit_test.rb
|
121
|
+
- activewarehouse/generators/dimension/dimension_generator.rb
|
122
|
+
- activewarehouse/generators/dimension/templates
|
123
|
+
- activewarehouse/generators/dimension/USAGE
|
124
|
+
- activewarehouse/generators/dimension/templates/fixture.yml
|
125
|
+
- activewarehouse/generators/dimension/templates/migration.rb
|
126
|
+
- activewarehouse/generators/dimension/templates/model.rb
|
127
|
+
- activewarehouse/generators/dimension/templates/unit_test.rb
|
128
|
+
- activewarehouse/generators/dimension_view/dimension_view_generator.rb
|
129
|
+
- activewarehouse/generators/dimension_view/templates
|
130
|
+
- activewarehouse/generators/dimension_view/USAGE
|
131
|
+
- activewarehouse/generators/dimension_view/templates/migration.rb
|
132
|
+
- activewarehouse/generators/dimension_view/templates/model.rb
|
133
|
+
- activewarehouse/generators/dimension_view/templates/unit_test.rb
|
134
|
+
- activewarehouse/generators/fact/fact_generator.rb
|
135
|
+
- activewarehouse/generators/fact/templates
|
136
|
+
- activewarehouse/generators/fact/USAGE
|
137
|
+
- activewarehouse/generators/fact/templates/fixture.yml
|
138
|
+
- activewarehouse/generators/fact/templates/migration.rb
|
139
|
+
- activewarehouse/generators/fact/templates/model.rb
|
140
|
+
- activewarehouse/generators/fact/templates/unit_test.rb
|
141
|
+
- activewarehouse/generators/time_dimension/templates
|
142
|
+
- activewarehouse/generators/time_dimension/time_dimension_generator.rb
|
143
|
+
- activewarehouse/generators/time_dimension/USAGE
|
144
|
+
- activewarehouse/generators/time_dimension/templates/fixture.yml
|
145
|
+
- activewarehouse/generators/time_dimension/templates/migration.rb
|
146
|
+
- activewarehouse/generators/time_dimension/templates/model.rb
|
147
|
+
- activewarehouse/generators/time_dimension/templates/unit_test.rb
|
148
|
+
- activewarehouse/lib/active_warehouse
|
149
|
+
- activewarehouse/lib/active_warehouse.rb
|
150
|
+
- activewarehouse/lib/active_warehouse/aggregate
|
151
|
+
- activewarehouse/lib/active_warehouse/aggregate.rb
|
152
|
+
- activewarehouse/lib/active_warehouse/aggregate_field.rb
|
153
|
+
- activewarehouse/lib/active_warehouse/bridge
|
154
|
+
- activewarehouse/lib/active_warehouse/bridge.rb
|
155
|
+
- activewarehouse/lib/active_warehouse/builder
|
156
|
+
- activewarehouse/lib/active_warehouse/builder.rb
|
157
|
+
- activewarehouse/lib/active_warehouse/calculated_field.rb
|
158
|
+
- activewarehouse/lib/active_warehouse/compat
|
159
|
+
- activewarehouse/lib/active_warehouse/core_ext
|
160
|
+
- activewarehouse/lib/active_warehouse/core_ext.rb
|
161
|
+
- activewarehouse/lib/active_warehouse/cube.rb
|
162
|
+
- activewarehouse/lib/active_warehouse/cube_query_result.rb
|
163
|
+
- activewarehouse/lib/active_warehouse/dimension
|
164
|
+
- activewarehouse/lib/active_warehouse/dimension.rb
|
165
|
+
- activewarehouse/lib/active_warehouse/fact.rb
|
166
|
+
- activewarehouse/lib/active_warehouse/field.rb
|
167
|
+
- activewarehouse/lib/active_warehouse/migrations.rb
|
168
|
+
- activewarehouse/lib/active_warehouse/ordered_hash.rb
|
169
|
+
- activewarehouse/lib/active_warehouse/prejoin_fact.rb
|
170
|
+
- activewarehouse/lib/active_warehouse/report
|
171
|
+
- activewarehouse/lib/active_warehouse/report.rb
|
172
|
+
- activewarehouse/lib/active_warehouse/version.rb
|
173
|
+
- activewarehouse/lib/active_warehouse/view
|
174
|
+
- activewarehouse/lib/active_warehouse/view.rb
|
175
|
+
- activewarehouse/lib/active_warehouse/aggregate/dwarf_aggregate.rb
|
176
|
+
- activewarehouse/lib/active_warehouse/aggregate/dwarf_common.rb
|
177
|
+
- activewarehouse/lib/active_warehouse/aggregate/dwarf_printer.rb
|
178
|
+
- activewarehouse/lib/active_warehouse/aggregate/no_aggregate.rb
|
179
|
+
- activewarehouse/lib/active_warehouse/aggregate/pid_aggregate.rb
|
180
|
+
- activewarehouse/lib/active_warehouse/bridge/hierarchy_bridge.rb
|
181
|
+
- activewarehouse/lib/active_warehouse/builder/date_dimension_builder.rb
|
182
|
+
- activewarehouse/lib/active_warehouse/builder/generator
|
183
|
+
- activewarehouse/lib/active_warehouse/builder/random_data_builder.rb
|
184
|
+
- activewarehouse/lib/active_warehouse/builder/test_data_builder.rb
|
185
|
+
- activewarehouse/lib/active_warehouse/builder/generator/generator.rb
|
186
|
+
- activewarehouse/lib/active_warehouse/builder/generator/name_generator.rb
|
187
|
+
- activewarehouse/lib/active_warehouse/builder/generator/paragraph_generator.rb
|
188
|
+
- activewarehouse/lib/active_warehouse/compat/compat.rb
|
189
|
+
- activewarehouse/lib/active_warehouse/core_ext/time
|
190
|
+
- activewarehouse/lib/active_warehouse/core_ext/time.rb
|
191
|
+
- activewarehouse/lib/active_warehouse/core_ext/time/calculations.rb
|
192
|
+
- activewarehouse/lib/active_warehouse/dimension/date_dimension.rb
|
193
|
+
- activewarehouse/lib/active_warehouse/dimension/dimension_reflection.rb
|
194
|
+
- activewarehouse/lib/active_warehouse/dimension/dimension_view.rb
|
195
|
+
- activewarehouse/lib/active_warehouse/dimension/hierarchical_dimension.rb
|
196
|
+
- activewarehouse/lib/active_warehouse/dimension/slowly_changing_dimension.rb
|
197
|
+
- activewarehouse/lib/active_warehouse/report/abstract_report.rb
|
198
|
+
- activewarehouse/lib/active_warehouse/report/chart_report.rb
|
199
|
+
- activewarehouse/lib/active_warehouse/report/data_cell.rb
|
200
|
+
- activewarehouse/lib/active_warehouse/report/data_column.rb
|
201
|
+
- activewarehouse/lib/active_warehouse/report/data_row.rb
|
202
|
+
- activewarehouse/lib/active_warehouse/report/dimension.rb
|
203
|
+
- activewarehouse/lib/active_warehouse/report/table_report.rb
|
204
|
+
- activewarehouse/lib/active_warehouse/view/crumb.rb
|
205
|
+
- activewarehouse/lib/active_warehouse/view/report_helper.rb
|
206
|
+
- activewarehouse/lib/active_warehouse/view/table_view.rb
|
207
|
+
- activewarehouse/lib/active_warehouse/view/yui_adapter.rb
|
208
|
+
- activewarehouse/tasks/active_warehouse_tasks.rake
|
209
|
+
has_rdoc: false
|
210
|
+
homepage: http://activewarehouse.rubyforge.org
|
211
|
+
post_install_message:
|
212
|
+
rdoc_options:
|
213
|
+
- --exclude
|
214
|
+
- .
|
215
|
+
require_paths:
|
216
|
+
- lib
|
217
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: "0"
|
222
|
+
version:
|
223
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
|
+
requirements:
|
225
|
+
- - ">="
|
226
|
+
- !ruby/object:Gem::Version
|
227
|
+
version: "0"
|
228
|
+
version:
|
229
|
+
requirements: []
|
230
|
+
|
231
|
+
rubyforge_project: activewarehouse
|
232
|
+
rubygems_version: 1.2.0
|
233
|
+
signing_key:
|
234
|
+
specification_version: 2
|
235
|
+
summary: Build data warehouses with Rails.
|
236
|
+
test_files: []
|
237
|
+
|