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

时间:2010-10-20 08:32:13

标签: ssas hierarchy mdx

this question regarding calculating a member开始,我有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

请注意,前两行实际上是第3行的组成部分。现在,我可以使用客户端代码执行一些魔术,该代码读取此数据以将该表转换为层次结构,但是 - 这就是问题 - 我可以做吗?它使用MDX?或者我只是让事情复杂化?如果有必要,我不会在多维数据集中进行更改,或者我可以在那里定义此层次结构。

3 个答案:

答案 0 :(得分:0)

AFAIK,您无法使用MDX在客户端获取假定为层次结构的结果,而无需使用客户端代码或更改多维数据集结构。即使你可以找到一个技巧来伪造客户端结果作为一个层次结构我不建议你这样做。

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

[资产]。[班级]

  • [固定收益]
    • [资产]。[类]。[固定收益衍生产品]
    • [资产]。[类]。[固定收益非衍生工具]
  • 属性
  • 权益

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

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

修改

以下是关于父子维度的article

答案 1 :(得分:0)

也许以这种方式添加计算成员:

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

答案 2 :(得分:0)

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