MDX, как сгладить результат функции потомков

У меня есть иерархия с 5 уровнями, я использую Descendants() для получения всего нижнего уровня члена. Но я получаю результат с одним столбцом, где мне нравится иметь результат с одним столбцом для каждого уровня. Итак, в каждой строке я повторить родителя, великих родителей и т. д. текущего члена.

WITH 
  MEMBER [Measures].[key] AS 
    [DimGLAcct].[MgtCOA].CurrentMember.UNIQUENAME 
  MEMBER [Measures].[level_] AS 
    [DimGLAcct].[MgtCOA].CurrentMember.level.ordinal 
SELECT 
  { 
    [Measures].[key]
  , [Measures].[level_]
  , [Measures].[Actuals] 
  } ON COLUMNS, 
  { 
    Descendants(
      [DimGLAcct].[MgtCOA].[Mparent5].&[MCOA].&[400000M - Total operating overhead expenses].&[440000M - Other expenses].&[441000M - Other expenses]
      ,
      ,SELF_AND_AFTER
     ) 
  } ON ROWS 
FROM [Model];

person Vincent Diallo-Nort    schedule 19.02.2016    source источник
comment
Что такое клиентский инструмент? .NET-код? СССР? Можете ли вы предоставить пример кода, чтобы мы знали, используете ли вы код ADOMD.NET или что-то еще?   -  person GregGalloway    schedule 19.02.2016
comment
В настоящее время, без определенного кода и сведений о клиенте, этот вопрос слишком широк.   -  person whytheq    schedule 19.02.2016
comment
Клиентским инструментом является SSRS, но я пытаюсь сгладить иерархию непосредственно в MDX.   -  person Vincent Diallo-Nort    schedule 20.02.2016
comment
Иерархия представляет собой иерархию учетных записей от уровня 5 до 0 (мельчайшая детализация).   -  person Vincent Diallo-Nort    schedule 20.02.2016
comment
L5 L4 L3 L2 L1 L0 я пытаюсь получить такой результат L5 L4 L3 L2 L1 L0 измерение A1 ВСЕ ВСЕ ВСЕ ВСЕ ВСЕ 1000 A1 A1.1 ВСЕ ВСЕ ВСЕ ВСЕ ВСЕ 500 A1 A1.1 A1.1.1 ВСЕ ВСЕ ВСЕ 200 A1 A1.1 A1.1.1 A1.1.1.1 ВСЕ ВСЕ 100 A1 A1.1 A1.1.1 A1.1.1.1 A1.1.1.1 ВСЕ 50 A1 A1.1 A1.1.1 A1.1.1.1 A1.1.1.1 А1.1.1.1.1 20   -  person Vincent Diallo-Nort    schedule 20.02.2016
comment
Запрос WITH MEMBER Measures.[key] AS [DimGLAcct].[MgtCOA].CurrentMember.UNIQUENAME MEMBER Measures.level_ as [DimGLAcct].[MgtCOA].CurrentMember.level.ordinal select { Measures.[key], Measures. level_, [Measures].[Actuals] } по столбцам, { Потомки([DimGLAcct].[MgtCOA].[Mparent5].&[MCOA].&[400000M - Общие операционные накладные расходы].&[440000M - Прочие расходы] .&[441000M - Прочие расходы],,SELF_AND_AFTER) } в строках из [Модель]   -  person Vincent Diallo-Nort    schedule 20.02.2016


Ответы (1)


Я не могу разобрать названия ваших уровней, но в mdx можно сделать следующее:

WITH 
  MEMBER [Measures].[key] AS 
    [DimGLAcct].[MgtCOA].CurrentMember.UNIQUENAME 
  MEMBER [Measures].[level_] AS 
    [DimGLAcct].[MgtCOA].CurrentMember.level.ordinal 
SELECT 
  { 
    [Measures].[key]
  , [Measures].[level_]
  , [Measures].[Actuals] 
  } ON COLUMNS, 

  [DimGLAcct].[LevelX]
 *[DimGLAcct].[LevelY]
 *[DimGLAcct].[LevelZ]
 *[DimGLAcct].[LevelK]

   ON ROWS 
FROM [Model];

Каждый из уровней в вашей пользовательской иерархии будет иметь соответствующие иерархии атрибутов, которые используются выше.

person whytheq    schedule 20.02.2016
comment
Привет, да, это была моя первая мысль, и это еще один запрос, который я использую, однако моя глобальная проблема немного сложнее, потому что мне нужно несколько раз складывать все потомки членов в строки. Таким образом, у меня будет первый набор всех потомков члена A1, а затем всех потомков члена B2. Поэтому, когда я использую подход с перекрестным соединением, я не могу этого сделать (даже когда я использую соединение). Обычный способ сделать это - использовать иерархию и объединение, но в итоге я получаю все в одном столбце. Винсент - person Vincent Diallo-Nort; 21.02.2016