I need the clarification about the meaning and purpose of NON_EMPTY_BEHAVIOR
when defining calculated member.
As I understood so far the purpose of NON_EMPTY_BEHAVIOR
is to tell icCube that if NON_EMPTY_BEHAVIOR
measure is null then entire calculated measure is null, so icCube does not need to evaluate calculation any further? Is that right?
Thanks.
The NON_EMPTY_BEHAVIOR property is used in calculated members to speed up some internal calculations. It defined a measure, or measure group, that has the same empty behavior as the calculated member.
An example,
MEMBER [Calculated] as [Measures].[Amount] * 23
As we can see from the formula when [Amount] is empty [Calculated] member will be empty. you could have another case :
MEMBER [Calculated] as [Measures].[Amount] * [Fx Rates].[Euros]
Here it's going to be empty if any of the two members is empty, for simplicity you could again define your NON_EMPTY_BEHAVIOR only on [Amount] as you know the is always an Fx rate.
So we coud define in icCube
MEMBER [Calculated] as [Measures].[Amount] * [Fx Rates].[Euros], NON_EMPTY_BEHAVIOR='Amount'
What is the use ?
It's mainly used in icCube to speed up axis NON EMPTY tag and when callling NonEmptyX function.
Pay attention that if you define it wrongly, using a wrong measure, you might find yourself with less members than expected ( NON EMPTY on axis, NonEmptyX function ... )