Re: Cube Design Question -
08-16-2006
, 02:26 PM
Michael:
Another approach I use in AS2000 will also work in AS2005. We have a
large cube with 3 significant non-measure dimensions: Time (at week
grain), Product, and Geography (Geos). We have one measure (ACV) that
is non-additive over Geos, additive over Product, and averaged over
Time. I had to develop a solution in order to get acceptable report
performance using this measure and several measures that are based on
it.
The solution is to build a 'normal' cube with regular dimensions. Using
a C# program (using OLE for OLAP that returns flattened rowsets), the
cube is queried with the ACV measure for Product at the leaf level,
Time at the Week level, and every Geos value. I write the dimension
labels and measure value out to a new table (about 43 million rows for
104 weeks). I create two new single-level dimensions: TimeWeek (with
just Week members) and GeosFlat (all Geos values in a 'flat' hierachy).
I create a new cube that has those dimensions and the shared Product
dimension. This cube only aggregates over Product and takes just a few
minutes to process. I join this cube with the 'normal' cube in a
virtual cube that uses the LookupCube function in a measure visible to
users.
This results in excellent performance for reports using this measure.
You may have an issue with the extract processing time (mine takes 40
hours per month for all 104 weeks). We restate the data every month.
Another issue may be designing a query that gives a rowset easy to
read. Except for the smallest cubes, stay away from ADOMD cellset
results - performance is bad. Right now, I'm experimenting with XMLA
but not getting good performance with large result sets.
Regards,
- David |