Search code examples
iccube

The purpose of NON_EMPTY_BEHAVIOR


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.


Solution

  • 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 ... )