ActiveWarehouse 0.3.0 is now available as a Gem, Zip or Gzip file from
RubyForge. You may also install directly from the subversion
repository, as always.
ActiveWarehouse is an open source plugin for Rails that extends Rails
to add support for data warehouse development. It has base classes for
facts, dimensions, bridges and cubes as well as aggregation
strategies, hierarchal dimensions, role-playing dimensions, etc. It
includes generators for each of the base classes and their migrations
and unit test stubs.
It's been a while (3 months to be exact) since I've done a proper
ActiveWarehouse release, however development has been progressing on
all parts of the framework. The cube implementation has been
completely redesigned to support pluggable aggregation. Aggregation
has been refactored as well to support aggregation across more than
just two dimensions. Currently there is support for a direct query
aggregate (i.e. non-persistent) and a ROLAP aggregate. We are
currently working on other aggregation methods for future releases.
Facts now define their dimensions using the dimension directive which
has behavior that extends the belongs_to from ActiveRecord.
0.3.0 Changes include:
* Updated docs.
* Fixed bug in report helper so that dimension ordering override now works as
* Changed dimension migration generator template to remove all the extraneous
* Complete overhaul of the Cube class implementation.
* Cube query results now encapsulated in the CubeQueryResult class.
* Cube query method now takes two forms, either the old style form with 4
required arguments and 5 optional arguments (with the last argument an
options Hash) or the new style which takes a single Hash of options.
* Completely rewrote aggregation system. Cubes now delegate aggregation to
Aggregation implementation classes.
* Developed NoAggregate aggregation strategy that goes directly to the fact
and dimension tables.
* Refactored render_report helper.
* Refactored bridge class to allow for extension for specific bridge types
(such as hierarchical bridges or weighted grouping bridges).
* Aggregate fields are now defined with classes. The base class is the Field
class and it is implemented by AggregateField and CalculatedField.
* Added support for prejoining a fact with some or all of its dimensions
* Dimension to fact relationships are now defined with the dimension directive
in the Fact class. This directive delegates to belongs_to.
* PosRetailSalesTransactionCube would now default to using
PosRetailSalesTransactionFact and all of its dimensions as its report_on and
pivots_on configuration by default. This means you only need to create a cube
class and then can define report_on or pivots_on if you need to override
* Updated dimension view support, used for dimension role-playing.
* DateDimension is now implemented as a class extending from Dimension.
* Test cases modified to reflect ETL changes as well as new functionality.
Documentation is available at
http://activewarehouse.rubyforge.org/rdoc/ . Enjoy!