While I understand the theoretical benefit of using scope over iif, in practice it shows to perform MUCH more poorly.
Below is a calced measure in a form that we are told to avoid and to use scope instead for the &[1] condition. But using scope performs terribly because the scope will calc the value 1 REGARDLESS of whether [SomeBaseMeasure] is empty or not and thus calc far more cells than it should. So why use scope? There's got to be a purpose I am missing.
CREATE MEMBER CURRENTCUBE.[Measures].[MyMeasure] As
iif(
IsEmpty([Measures].[SomeBaseMeasure])
,null
,iif (
[MyDim].[MyHierarchy].CurrentMember is [MyDim].[MyHierarchy].&[1]
,1
,[Measures].[SomeComplexClacMeasure]
)
),
NON_EMPTY_BEHAVIOR = { [SomeBaseMeasure] },