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

Ssas MDX查询中的用户定义层次结构,ssas,hierarchy,mdx,Ssas,Hierarchy,Mdx,以下是我的2个计算成员,定义为: MEMBER [Asset].[Class].[Fixed Income Derivatives] AS AGGREGATE( { [Asset].[Class].&[Fixed Income], [Asset].[Sub Class].&[Derivatives] }, [Measures].CurrentMember ) MEMBER [Asset].[Class].[Fixed Incom

以下是我的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
这给了我如下的输出:

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吗?还是我只是把事情复杂化了?如果有必要,或者如果我可以在多维数据集中定义这个层次结构,我并不反对在多维数据集中进行更改。

AFAIK,如果不使用客户端代码或更改多维数据集结构,您就不能使用MDX在客户端获得一个被认为是层次结构的结果。即使你能找到一个把戏来伪造客户的结果作为一个层次结构,我不建议你这样做

这是我的建议。 如果我理解正确,您希望得到的结果是一种不平衡的层次结构树,如下所示

[Asset].[Class]

  • [固定收益]
    • [资产][类别][固定收益衍生品]
    • [资产][类别][固定收益非衍生工具]
  • 财产
  • 衡平法
这种不平衡树只能由父子层次结构实现

您可以尝试通过添加包含
属性
权益
成员的中间级别(或叶级别)来平衡层次结构,也可以创建父子层次结构以实现更深层次的不平衡树

编辑


下面是一个关于父子维度的示例。

好吧,如果不使用客户端代码或更改多维数据集结构,就不能使用MDX在客户端获得假定为层次结构的结果。即使你能找到一个把戏来伪造客户的结果作为一个层次结构,我不建议你这样做

这是我的建议。 如果我理解正确,您希望得到的结果是一种不平衡的层次结构树,如下所示

[Asset].[Class]

  • [固定收益]
    • [资产][类别][固定收益衍生品]
    • [资产][类别][固定收益非衍生工具]
  • 财产
  • 衡平法
这种不平衡树只能由父子层次结构实现

您可以尝试通过添加包含
属性
权益
成员的中间级别(或叶级别)来平衡层次结构,也可以创建父子层次结构以实现更深层次的不平衡树

编辑


下面是一个关于父子维度的示例。

也许可以这样添加计算成员:

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

可能通过以下方式添加计算成员:

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

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

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

尝试了那个。。。就其而言,固定收入是层次结构的最底层,不允许我再添加更多的孩子。尝试过那个。。。就其而言,固定收益是层次结构的底部,不允许我再添加子节点。一个节点有子节点(固定收益),三个节点没有子节点。这就是不平衡树的定义吗?我更新了答案,添加了一个关于父子维度和不平衡层次结构的文章链接。一个节点有子节点(固定收入),三个节点没有子节点。这就是不平衡树的定义吗?我更新了答案,添加了一个关于父子维度和不平衡层次结构的文章链接。