代码之家  ›  专栏  ›  技术社区  ›  Jamiec

MDX查询中的用户定义层次结构

  •  2
  • Jamiec  · 技术社区  · 15 年前

    从…开始 this question regarding calculating a member 我有两个计算成员定义为:

    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
    )
    

    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
    

    注意,前两行实际上是第3行的组成部分。现在,我可以用读取这些数据的客户机代码来实现一些魔力,从而将该表转换为层次结构,但是-还有一个问题-我可以使用MDX来实现吗?或者我只是把事情复杂化了?如果必要的话,或者如果我可以在那里定义这个层次结构的话,我不反对在多维数据集中进行更改。

    3 回复  |  直到 9 年前
        1
  •  0
  •   orka    15 年前

    不过,如果没有客户端代码或更改多维数据集结构的魔力,就不能使用MDX在客户端获得假定为层次结构的结果。即使你能找到一个把戏来伪装客户的结果,作为一个层次,我不建议你走那条路。

    如果我理解正确 ,您希望得到一个类似于下面的不平衡层次结构树的结果。

    [资产][类别]

    • [固定收益]
      • [资产][类别][固定收益衍生品]
      • [资产][类别][固定收益非衍生工具]
    • 股权

    这种不平衡树只能通过父子层次结构来实现。

    您可以尝试通过添加中间级别(或叶级别)来平衡层次结构,该级别包括 Property Equity 成员或创建父子层次结构以实现更深层次的不平衡树。

    这是一个 article 关于父子维度。

        2
  •  0
  •   Jamiec    15 年前

    我最终只返回了类和子类,并在客户端代码中构建了层次结构。

        3
  •  0
  •   AHiggins    11 年前

    WITH MEMBER [Asset].[Class].[Fixed Income].[Derivatives] AS ...