2012-05-22 6 views
1

Мне нужно разделить мои вычисления на три группы: - которые применяются только к базовым ячейкам (листья) - которые применяются ко всем ячейкам - которые применяются только к консолидации ячеек (ячейки верхней иерархии уровни) Например, у меня есть иерархия: Год-квартал-месяц. Базовые ячейки этой иерархии в «Месяце» и консолидации ячеек в «Году» и «Квартале».SSAS: расчеты в кубе

Для базовых ячеек я могу написать эту «сферу»:

SCOPE (
    [Measures].[Value] , 
    [DimProducts].[Name].[Donut] , 
    [DimTime].[Month].CHILDREN  // month only 
    ); 
THIS = [Measures].[Value]*2+100500; 
END SCOPE; 

И я не знаю, как писать «рамки» для укрепления клеток? Я не могу создать «рамку» для каждого уровня иерархии, такие как:

SCOPE (
    [Measures].[Value] , 
    [DimProducts].[Name].[Donut] , 
    [DimTime].[Quarter].CHILDREN // quarter only 
    ); 
... 
END SCOPE; 
SCOPE (
    [Measures].[Value] , 
    [DimProducts].[Name].[Donut] , 
    [DimTime].[Year].CHILDREN  // year only 
    ); 
... 
END SCOPE; 

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

ответ

2

Вы можете использовать функции MDX в выражении подкуба SCOPE.

Предположив вашу года-квартал-месяц иерархии пользователя имеет Год, квартала и Месяца уровней, вы можете использовать следующее выражение для уровней адресов выше месяца уровня.

SCOPE ([Measures].[Value] 
     , [DimProducts].[Name].[Donut] 
     , Descendants([DimTime].[Year-Quarter-Month].[All] 
        , [DimTime].[Year-Quarter-Month].[Quarter] 
        , SELF_AND_BEFORE 
        ) 
    ); 
... 
END SCOPE; 

Ссылка:

Смежные вопросы