- Applied patch from Giao Phan for date dimension builder.
- Updated for Rails 2.x, no longer compatible for Railsversions less than 2.x
- Updated docs.
- Fixed bug in report helper so that dimension ordering override now works as expected.
- Changed dimension migration generator template to remove all the extraneous code.
- 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 these defaults.
- 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.
- Implemented basic hierarchical dimension functionality for variable depth hierarchies
- Implemented dimensional views for dimensional role-playing
- Implemented support for type 2 slowly changing dimensions (courtesy of Seth Ladd)
- Added generators for bridges and dimensional views to support the functionality above
- Added unit tests for generators
- Significant performance improvements in how aggregate data is loaded into the
cube
- Only get the calculated_fields and calculate_field_options once, outside of the aggregate loop.
- Condition added to the aggregate lookup query to only retrieve current stage
- Added :select to Dimension.available_values which makes it work on SQL Server (courtesy of Wenyi Zhou)
- Changed require_gem to gem and added alias to allow for older versions of rubygems
- Implemented initial random data generator with unit tests
- Added support for specifying a dimension-wide or level-by-level override of ordering. Useful for dates, for example when the month names should not be ordered by name but should be ordered by the calendar order for the months
- Initial release