Инструкция MDX IIF для расчета нового члена на основе показателей и иерархии - PullRequest
2 голосов
/ 13 мая 2019

У меня есть простой Data Cube для вычисления общих расходов с одним показателем Amount и некоторыми измерениями и иерархиями, но интересным будет Relationship.Он описывает, кто купил что-то для кого.Это структура:

  • Кто
  • Для кого
  • Ключ отношения

Я пытаюсь закодировать расчет, представляющий долг.Например, если я куплю что-нибудь для совместного использования, это будет половина 0.5 * Amount.С другой стороны, если бы я купил что-то для себя, это было бы 0 * Amount.

Насколько я попробовал следующий расчет:

IIF(
[dimRelationship].[Relationship].currentMember = [dimRelationship].[Relationship].[RelatonshipID].&[MeShared],
[Measures].[Amount]*0.5,
[Measures].[Amount]*0)

Это работает хорошо только на самом низком RelationshipID уровне,Когда я свертываю сводную таблицу, она действует в соответствии с выражением else.Это не удивительно, потому что currentMember иерархии больше не MeShared.Еще одна плохая вещь, что суммарная агрегация тоже не работает - это было бы наиболее важно в качестве общего резюме.Есть какой-нибудь суффикс, например .LeafMember или что-то подобное, которое могло бы помочь мне выполнить этот расчет?

Заранее спасибо!

С уважением,

Макс!

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

В вашей таблице фактов добавьте еще один столбец, в этом столбце хранится «Сумма», умноженная на отношение ID для этой конкретной строки. Это решит проблему прямо из коробки

0 голосов
/ 15 мая 2019

Попробуйте оператор SCOPE.

Сначала создайте новый расчет [Debt Calculation] as [Measures].[Amount]*0 /* as ELSE-scenario */

Затем создайте SCOPE:

SCOPE([Debt Calculation],[dimRelationship].[Relationship].[RelatonshipID].&[MeShared]);
THIS=[Measures].[Amount]*0.5;
END SCOPE;

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

...