【发布时间】:2011-04-27 22:08:25
【问题描述】:
从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
请注意,前 2 行实际上是第 3 行的组成部分。现在,我可以对读取此数据的客户端代码做一些魔术,以将该表转换为层次结构,但是 - 这是问题所在 - 我可以做它使用MDX?还是我只是把事情复杂化了?如有必要,我不反对在多维数据集中进行更改,或者我可以在那里定义这个层次结构。
【问题讨论】: