SSAS, почему оператор SCOPE работает для вычисляемого члена, но не для измерения?

В приведенных ниже примерах первый объект представляет собой меру NULL, которая имеет 2 оператора SCOPE, один из которых определяет основную логику, а другой должен делать меру NULL при разрезании атрибутом "Cohort Retention LQ Code". В настоящее время показатель всегда показывает NULL. Однако, когда я создаю вычисляемый элемент и использую ту же логику SCOPE, вычисляемый элемент ведет себя как ожидалось.

Вопрос: Почему одна и та же логика SCOPE ведет себя по-разному для меры против вычисляемого элемента? Также стоит отметить, что мера будет отображать данные, если я исключу второй оператор SCOPE.

//6 Year Graduation Rate is a measure within one of the cubes measure groups and has relationships with all the referenced dimensions/attributes

SCOPE([Measures].[6 Year Graduation Rate]);    
    THIS= IIF(AGGREGATE(([Cohort Retention LQ Code].&[24], [Cohort Retention Type Descr].&[LQ1 Census], {[Cohort Retention Degree Level Code].&[18], [Cohort Retention Degree Level Code].&[13], [Cohort Retention Degree Level Code].&[GC], [Cohort Retention Degree Level Code].&[UC], [Cohort Retention Degree Level Code].&[17]}), [Measures].[Cohort Retention Count])= 0,
    NULL,
    AGGREGATE(([Cohort Retention LQ Code].&[24], [Cohort Retention Type Descr].&[LQ1 Census], {[Cohort Retention Degree Level Code].&[18], [Cohort Retention Degree Level Code].&[13], [Cohort Retention Degree Level Code].&[GC], [Cohort Retention Degree Level Code].&[UC], [Cohort Retention Degree Level Code].&[17]}), [Measures].[Cohort Graduated Count]) / 
    AGGREGATE(([Cohort Retention LQ Code].&[24], [Cohort Retention Type Descr].&[LQ1 Census], {[Cohort Retention Degree Level Code].&[18], [Cohort Retention Degree Level Code].&[13], [Cohort Retention Degree Level Code].&[GC], [Cohort Retention Degree Level Code].&[UC], [Cohort Retention Degree Level Code].&[17]}), [Measures].[Cohort Retention Count])
    );    
    FORMAT_STRING(THIS)= "Percent";    
END SCOPE;   

SCOPE (DESCENDANTS([Cohort Retention LQ].[Cohort Retention LQ Code],,AFTER));                                                                                                                                                                                                                                                                                                                                                                                                                   
    [Measures].[6 Year Graduation Rate]= NULL;                                                                                                                                                                                                                                                                                                                                                                                       
END SCOPE;                                                                                                                                                                                                                                                                                                                                                                                                                 

//6 Year Graduation Rate Test is a calculated member

CREATE MEMBER CURRENTCUBE.[Measures].[6 Year Graduation Rate Test]
    AS NULL, 
FORMAT_STRING = "Percent", 
VISIBLE = 1,  DISPLAY_FOLDER = 'Proxy Cohort';   

SCOPE([Measures].[6 Year Graduation Rate Test]);    
    THIS= IIF(AGGREGATE(([Cohort Retention LQ Code].&[24], [Cohort Retention Type Descr].&[LQ1 Census], {[Cohort Retention Degree Level Code].&[18], [Cohort Retention Degree Level Code].&[13], [Cohort Retention Degree Level Code].&[GC], [Cohort Retention Degree Level Code].&[UC], [Cohort Retention Degree Level Code].&[17]}), [Measures].[Cohort Retention Count])= 0,
    NULL,
    AGGREGATE(([Cohort Retention LQ Code].&[24], [Cohort Retention Type Descr].&[LQ1 Census], {[Cohort Retention Degree Level Code].&[18], [Cohort Retention Degree Level Code].&[13], [Cohort Retention Degree Level Code].&[GC], [Cohort Retention Degree Level Code].&[UC], [Cohort Retention Degree Level Code].&[17]}), [Measures].[Cohort Graduated Count]) / 
    AGGREGATE(([Cohort Retention LQ Code].&[24], [Cohort Retention Type Descr].&[LQ1 Census], {[Cohort Retention Degree Level Code].&[18], [Cohort Retention Degree Level Code].&[13], [Cohort Retention Degree Level Code].&[GC], [Cohort Retention Degree Level Code].&[UC], [Cohort Retention Degree Level Code].&[17]}), [Measures].[Cohort Retention Count])
    );    
    FORMAT_STRING(THIS)= "Percent";    
END SCOPE;   

SCOPE (DESCENDANTS([Cohort Retention LQ].[Cohort Retention LQ Code],,AFTER));                                                                                                                                                                                                                                                                                                                                                                                                                   
    [Measures].[6 Year Graduation Rate Test]= NULL;                                                                                                                                                                                                                                                                                                                                                                                       
END SCOPE;     

0 ответов

Другие вопросы по тегам