[Mondrian] All Members vs Aggregate

Thiyagu Palanisamy tpalanis at thoughtworks.com
Tue May 8 10:29:35 EDT 2007


For implementing Sql with Grouping Set we need to change the way the 
following classes interact during loading of Cell request data.

1. fastBatchingCellReader.loadAggregations() -> batch.loadAggregation()
2. batch.loadAggregation() -> aggregationManager.loadAggregation()
3. aggregationManager.loadAggregation() -> aggregation.load()
4. aggregation.load() -> Segment.load()

Using SQL with Grouping Set function needs to be decided at the Batch 
level, once we identify the batches that can be grouped then we need to 
tag them together and pass this information down to Segment.load() to fire 
single SQL for multiple batches.

Segment.load() static method needs information about all the segment 
instances which are going to be queried together along with some 
additional information from Aggregation/Batch class.

So we need to put together all the segment instances from multiple grouped 
batches and pass it to Segment.load().

We are thinking of the following approach to achieve this,

Instead of aggregation.load() calling Segment.load() with its Segments 
list, aggregation.load() need to return Segment list of each batch to the 
FBCR(or class representing Grouped Batch).
Then FBCR will group the segments of grouped batches and make a call to 
Segment.load static method to fire single sql with grouping sets and 
populate all those Segments.

We are close to finishing a working prototype based on the above approach.
Hence would like to get your early feedback to ensure that we are on right 

Code posted at http://forums.pentaho.org/showthread.php?t=53644 is POC for 
logic of grouping the Batch and extracting information from a grouping set 
sql to multiple segments of multiple batches.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20070508/40906426/attachment.html 

More information about the Mondrian mailing list