Вычисляемый элемент на основе значения атрибута измерения

Я хочу создать в своем кубе несколько вычисляемых показателей, которые условно используют значение из таблицы показателей на основе значения атрибута измерения.

Например: если статус документа в измерении документа — CP, используйте меру Committed Value. Вот что у меня есть для этого:

CREATE MEMBER CURRENTCUBE.[Measures].CalcCommittedValue
 AS ([Document].[Document Status].&[CP], [Measures].[Committed Value]), 
FORMAT_STRING = "$#,##0;-$#,##0", 
VISIBLE = 1 ,  ASSOCIATED_MEASURE_GROUP = 'Document Total'  ;   

И похоже, что это работает, пока я не начну просматривать куб и не поставлю статус документа и значение CalcCommittedValue в браузере. Все параметры статуса документа отображают одно и то же значение CalcCommittedValue.

Спасибо за вашу помощь!


person user992228    schedule 29.10.2013    source источник
comment
Что, по вашему мнению, будет отличаться от результата, который вы видите? Используемое выражение указывает службам Analysis Services использовать статус документа CP для определения результата, независимо от статуса документа ячейки.   -  person FrankPl    schedule 30.10.2013
comment
Спасибо за ваш комментарий, мне явно нужно многое узнать о MDX. Скоро закажу книгу на эту тему.   -  person user992228    schedule 30.10.2013


Ответы (1)


Чтобы сделать это правильно, попробуйте использовать оператор SCOPE()... например

CREATE MEMBER CURRENTCUBE.[Measures].[CalcCommittedValue]
AS

  SCOPE([Document].[Document Status].[&CP]);

   THIS = [Measures].[Committed Value];

  END SCOPE;

Оператор Scope будет вызывать вычисление значения всякий раз, когда присутствует статус документа [CP], и никак иначе. Очень мощное заявление, и вы должны получить то, что вам нужно.

person Josh Fennessy    schedule 30.10.2013
comment
Спасибо, Джош, это то, что я закончил, и пока все хорошо: CREATE MEMBER CURRENTCUBE.[Measures].[CalcCommittedValue] AS 0, FORMAT_STRING = $#,##0;-$#,##0, VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'Всего по документу' ; Область [Меры].[CalcCommittedValue]; Область действия [Документ].[Статус документа].&[CP]; Это = [Меры].[Обязательное значение]; Конечная область; Область [Документ].[Статус документа].[Все]; This = ([Документ].[Статус документа].&[CP], [Меры].[Зафиксированное значение]); Конечная область; Конечная область; - person user992228; 30.10.2013
comment
Я нашел больше здесь: существующая-мера-и-значение-измерения" rel="nofollow noreferrer">social.msdn.microsoft.com/Forums/sqlserver/en-US/ - person user992228; 30.10.2013