【问题标题】:Combine different hierarchy levels using MDX Query使用 MDX 查询组合不同的层次结构级别
【发布时间】:2018-05-17 08:40:44
【问题描述】:

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 显示来自 Pivot 的 String[][] 结果)

Result 1-click to see the image

查询 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 显示来自 Pivot 的 String[][] 结果)

Result 2-click to see the image

2.问题

如何使用一个 Mdx 查询将这些数据汇总在一起? 非常感谢。

【问题讨论】:

    标签: mdx hierarchy mdx-query


    【解决方案1】:

    我认为您可以使用 PLGroup 层次结构的 ALL 成员来进行组合 - 您别无选择,因为两者都需要相同的维度:

    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]
    )
    

    【讨论】:

    • 百万感谢!!!我使用“[PLGroup].[All]”,结果与我想要的非常相似。虽然我发现结果数字仍然存在问题,但孩子的总和不等于父亲。 Anway,我以后会弄清楚的。谢谢你的想法!!!
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多