Пользовательская иерархия в запросе MDX - PullRequest
2 голосов
/ 20 октября 2010

Исходя из этого вопроса относительно вычисления члена У меня есть 2 вычисляемых члена, определенных как:

MEMBER [Asset].[Class].[Fixed Income Derivatives]
AS
AGGREGATE(
    {
       [Asset].[Class].&[Fixed Income],
       [Asset].[Sub Class].&[Derivatives]
    },
    [Measures].CurrentMember
)
MEMBER [Asset].[Class].[Fixed Income Non-derivatives]
AS
AGGREGATE(
    {
      [Asset].[Class].&[Fixed Income],
      EXCEPT([Asset].[Sub Class].[Sub Class],[Asset].[Sub Class].&[Derivatives])
    },
    [Measures].CurrentMember
)

Я могу использовать их в запросе MDX следующим образом:

SELECT
  {
   [Measures].[Market Value]
  } ON 0,
  NON EMPTY
  { 
   [Asset].[Class].[Fixed Income Derivatives],
   [Asset].[Class].[Fixed Income Non-derivatives]
   [Asset].[Class].[Class]
  } ON 1
  FROM [Asset]

И это дает мне вывод следующим образом:

Class-----------------------|-MarketValue
============================|=============
Fixed Income Derivatives    | 12345
Fixed Income Non-derivatives| 54321
Fixed Income                | 66666
Property                    | 123
Equity                      | 987

Обратите внимание, что первые 2 строки на самом деле являются составными частями строки 3. Теперь я могу немного поработать с клиентским кодом, который читает этоданные, чтобы превратить эту таблицу в иерархию, но - и вот в чем вопрос - могу ли я сделать это с помощью MDX?Или я просто усложняю вещи?Я не против внесения изменений в куб при необходимости или если бы я мог определить эту иерархию там.

Ответы [ 3 ]

0 голосов
/ 22 октября 2010

Возможно добавление вычисляемого члена таким образом:

WITH MEMBER [Asset].[Class].[Fixed Income].[Derivatives] AS ...
0 голосов
/ 02 ноября 2010

В итоге я просто возвратил оба класса и подкласса и построил иерархию в коде клиента.

0 голосов
/ 22 октября 2010

AFAIK, вы не можете использовать MDX для получения результата, который предполагается в виде иерархии на стороне клиента, без некоторого волшебства с клиентским кодом или изменения структуры куба. Несмотря на то, что вы можете найти способ обмануть клиента в виде иерархии, я не советую вам идти по этому пути.

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

[Актив]. [Класс]

  • [Фиксированный доход]
    • [Актив]. [Класс]. [Производные с фиксированным доходом]
    • [Актив]. [Класс]. [Непроизводные с фиксированным доходом]
  • Недвижимость
  • Справедливость

Этот вид несбалансированных деревьев может быть реализован только с помощью иерархии родитель-потомок.

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

Редактировать

Вот статья об измерениях родитель-потомок.

...