Объедините различные уровни иерархии, используя MDX Query - PullRequest
0 голосов
/ 17 мая 2018

1.Описание

Теперь у меня два mdx-запроса, разница только в настройках ON ROWS.Вот каждый запрос и его результаты.

Запрос 1:

SELECT

NON EMPTY
{
  [PLOwner].[PLOwner].Members
}
ON ROWS
,
NON EMPTY
Crossjoin(
  {
    [InfoType].[InfoType].[Risk_RecoveryJTDTable],
    [InfoType].[InfoType].[Equivalent_Notional],
    [InfoType].[InfoType].[Risk_SPC],
    [InfoType].[InfoType].[Risk_PSM],
    [InfoType].[InfoType].[Risk_PV10],
    [InfoType].[InfoType].[Notional],
    [InfoType].[InfoType].[Notional_IMM],
    [InfoType].[InfoType].[PnL],
    [InfoType].[InfoType].[TomorrowPnL],
    [InfoType].[InfoType].[RollPnL],
    [InfoType].[InfoType].[RollDownPnL],
    [InfoType].[InfoType].[Risk_JTD],
    [InfoType].[InfoType].[Risk_Raw_KC],
    [InfoType].[InfoType].[Risk_RR],
    [InfoType].[InfoType].[FundingPnLWCOF],
    [InfoType].[InfoType].[FundingPnLRR],
    [InfoType].[InfoType].[FundingPnLSHW],
    [InfoType].[InfoType].[FundingPnLBox],
    [InfoType].[InfoType].[FundingPnLInterest]
  }
  ,
  {
    DrillDownLevel([Category].[ALL].[AllMember])
  }
  ,
  {
    DrillDownLevel([Label1].[ALL].[AllMember])
  }
  ,
  {
    DrillDownLevel([IsError].[ALL].[AllMember])
  }
)
ON COLUMNS

FROM
  [UnityRiskCube]

WHERE
(
  [Measures].[Risk.SUM],
  [BusinessGroup].[BusinessGroup].[AeJ Flow Credit],
  [Context].[ContextId].[official:Live]
)

Результат 1: (я использую Excel, чтобы показать результат String [] [] из Pivot)

Результат 1-клик, чтобы увидеть изображение

Запрос 2:

SELECT

NON EMPTY
Crossjoin(
  {
    [PLOwner].[PLOwner].Members
  }
  ,
  {
    [PLGroup].[PLGroup].Members
  }
)
ON ROWS
,
NON EMPTY
Crossjoin(
  {
    [InfoType].[InfoType].[Risk_RecoveryJTDTable],
    [InfoType].[InfoType].[Equivalent_Notional],
    [InfoType].[InfoType].[Risk_SPC],
    [InfoType].[InfoType].[Risk_PSM],
    [InfoType].[InfoType].[Risk_PV10],
    [InfoType].[InfoType].[Notional],
    [InfoType].[InfoType].[Notional_IMM],
    [InfoType].[InfoType].[PnL],
    [InfoType].[InfoType].[TomorrowPnL],
    [InfoType].[InfoType].[RollPnL],
    [InfoType].[InfoType].[RollDownPnL],
    [InfoType].[InfoType].[Risk_JTD],
    [InfoType].[InfoType].[Risk_Raw_KC],
    [InfoType].[InfoType].[Risk_RR],
    [InfoType].[InfoType].[FundingPnLWCOF],
    [InfoType].[InfoType].[FundingPnLRR],
    [InfoType].[InfoType].[FundingPnLSHW],
    [InfoType].[InfoType].[FundingPnLBox],
    [InfoType].[InfoType].[FundingPnLInterest]
  }
  ,
  {
    DrillDownLevel([Category].[ALL].[AllMember])
  }
  ,
  {
    DrillDownLevel([Label1].[ALL].[AllMember])
  }
  ,
  {
    DrillDownLevel([IsError].[ALL].[AllMember])
  }
)
ON COLUMNS

FROM
  [UnityRiskCube]

WHERE
(
  [Measures].[Risk.SUM],
  [BusinessGroup].[BusinessGroup].[AeJ Flow Credit],
  [Context].[ContextId].[official:Live]
)

Результат 2: (я использую Excel, чтобы показать результат String [] [] из Pivot)

Результат 2-клик, чтобы увидеть изображение

2. Вопрос

Как я могу собрать эти данные, используя одинMDX-запрос?Большое спасибо.

1 Ответ

0 голосов
/ 17 мая 2018

Я думаю, что вы можете использовать ALL член иерархии PLGroup, чтобы иметь возможность комбинировать - у вас нет выбора в том, что для обоих вариантов потребуется одинаковая размерность:

SELECT

NON EMPTY
{
  [PLOwner].[PLOwner].Members
 *[PLGroup].[PLGroup].[All] //<< or this may be [PLGroup].[All]
,
  [PLOwner].[PLOwner].Members
 *[PLGroup].[PLGroup].Members
}
ON ROWS
,
NON EMPTY
Crossjoin(
  {
    [InfoType].[InfoType].[Risk_RecoveryJTDTable],
    [InfoType].[InfoType].[Equivalent_Notional],
    [InfoType].[InfoType].[Risk_SPC],
    [InfoType].[InfoType].[Risk_PSM],
    [InfoType].[InfoType].[Risk_PV10],
    [InfoType].[InfoType].[Notional],
    [InfoType].[InfoType].[Notional_IMM],
    [InfoType].[InfoType].[PnL],
    [InfoType].[InfoType].[TomorrowPnL],
    [InfoType].[InfoType].[RollPnL],
    [InfoType].[InfoType].[RollDownPnL],
    [InfoType].[InfoType].[Risk_JTD],
    [InfoType].[InfoType].[Risk_Raw_KC],
    [InfoType].[InfoType].[Risk_RR],
    [InfoType].[InfoType].[FundingPnLWCOF],
    [InfoType].[InfoType].[FundingPnLRR],
    [InfoType].[InfoType].[FundingPnLSHW],
    [InfoType].[InfoType].[FundingPnLBox],
    [InfoType].[InfoType].[FundingPnLInterest]
  }
  ,
  {
    DrillDownLevel([Category].[ALL].[AllMember])
  }
  ,
  {
    DrillDownLevel([Label1].[ALL].[AllMember])
  }
  ,
  {
    DrillDownLevel([IsError].[ALL].[AllMember])
  }
)
ON COLUMNS

FROM
  [UnityRiskCube]

WHERE
(
  [Measures].[Risk.SUM],
  [BusinessGroup].[BusinessGroup].[AeJ Flow Credit],
  [Context].[ContextId].[official:Live]
)
...