Элемент измерения как вычисляемая мера в многомерных выражениях

Мне нужно, чтобы элемент измерения возвращался как вычисляемая мера.

Данный:

Габаритные размеры

  • Клиент {ACME, EMCA, Universal Imports, Universal Exports}
  • Продавец {Боб, Фред, Мэри, Джо}
  • Тип кредита {директор, менеджер}

Меры

  • Кредитная стоимость
  • Ценность

Отношения

  • Клиент — это измерение фактов, содержащих Ценность.
  • Клиент, Продавец и Тип кредита — это измерения фактов, которые содержат Кредитную стоимость.

Я пытаюсь сделать следующее:

Создайте вычисляемые меры, которые вернут продавца с наибольшим значением $s, зачисленным в роль для клиента. например

| Customer          | Director | Manager | Value |
|-------------------|----------|---------|-------|
| ACME              | Bob      | Fred    | 500   |
| EMCA              | Bob      | Fred    | 540   |
| Universal Imports | Mary     | Joe     | 1000  |
| Universal Exports | Mary     | Fred    | 33    |
  • ACME приписала Бобу 490 в качестве директора
  • ACME зачислила Фреду 500 в качестве менеджера
  • ACME присвоил Мэри 10 баллов в качестве директора

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


person Wayne Arthurton    schedule 05.06.2009    source источник


Ответы (1)


Если я правильно понимаю вашу проблему, что-то в этой строке должно помочь (конечно, вам нужно будет использовать правильный уровень, иерархию и имена кубов):

   with
    member [Measures].[DirectorTemp] as topcount([Salesperson].[Salesperson].members,1,([Measures].[Credited Value],[Credit Type].[Director],[Customer].currentmember)).item(0).properties("Caption")   
    member [Measures].[Director] as iif([Measures].[DirectorTemp] = [Salesperson].UnknownMember.properties("caption"), null, [Measures].[DirectorTemp])
    member [Measures].[ManagerTemp] as topcount([Salesperson].[Salesperson].members,1,([Measures].[Credited Value],[Credit Type].[Manager],[Customer].currentmember)).item(0).properties("Caption") 
    member [Measures].[Manager] as iif([Measures].[ManagerTemp] = [Salesperson].UnknownMember.properties("caption"), null, [Measures].[ManagerTemp])


    select
        {[Measures].[Director],[Measures].[Manager],[Measures].[Value]} on 0,
        {[Customer].members} on 1
    from MyCube
person Santiago Cepas    schedule 05.06.2009
comment
Спасибо за ответ. Я адаптировал его к своим данным. Один быстрый вопрос. Если кортеж не возвращает ни одного, я получаю Неизвестный элемент из измерения Продавец. Как я могу этого избежать? - person Wayne Arthurton; 05.06.2009
comment
Я отредактировал запрос, чтобы он возвращал null вместо Unknown. Немного грязно, но должно работать... - person Santiago Cepas; 06.06.2009
comment
Спасибо. Я решил немного по-другому. Я обернул iff(isempty(Tuple Definition), NULL, TOPCOUNT.... Как указано ранее), чтобы получить аналогичный результат. Моя единственная проблема заключается в том, что CurrentMember не работает должным образом, когда две иерархии из измерения клиента находятся в операторе выбора, а результаты фильтруются. - person Wayne Arthurton; 06.06.2009