I'm a beginner in OLAP and data warehouse. I defined 3 parent-child dimensions, which are customer, product and time. For each dimension, there are several levels. And there can be data at some nonleaf levels of each dimension from the underlying relational data source. I want to get the aggregations in this way:
1. if there is a datamember at nonleaf level, then use it instead of the aggregation of its children
2. if there is no datamember at that level, try to aggregate from its children below (children can either have nonleaf data or aggregated number from the grandchildren level).

when designing these 3 dimensions, in the property "custom rollup formula", I use the following expression:

IIf(IsEmpty(([customer].CurrentMember.Datamember, [product].CurrentMember.Datamember, [time].CurrentMember.Datamember)), aggregate(currentmember.children), CalculationPassValue( ([customer].CurrentMember.Datamember, [product].CurrentMember.Datamember, [time].CurrentMember.Datamember), 0 ) )

But after running this, an error will return saying sth. wrong with this formula. I don't have any clue how to fix it, can anyone give me some advice on how to do it?
Thanks so much