从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
)我可以在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做到这一点吗?或者我只是把事情复杂化了?如果有必要,或者如果我可以在那里定义这个层次结构,我并不反对在多维数据集中进行更改。
发布于 2010-11-02 23:45:41
我最终只返回了Class和Sub Class,并在客户端代码中构建了层次结构。
发布于 2010-10-22 05:35:11
AFAIK,如果没有一些客户端代码的魔术或改变多维数据集结构,你不能使用MDX来获得客户端的层次结构的结果。即使您可以找到一个技巧来伪造客户端的结果作为一个层次结构,但我不建议您这样做。
这是我的建议。如果我理解正确的话,,你想得到的结果是一个不平衡的层次结构树,如下所示。
Asset.Class
Income Income
这种不平衡树只能由父子层次结构实现。
您可以尝试通过添加包含Property和Equity成员的中间级别(或叶级别)来平衡层次结构,或者创建父子层次结构以实现更深层次的不平衡树。
编辑
这是一个关于父子维度的article。
发布于 2010-10-22 17:47:31
也许可以这样添加计算成员:
WITH MEMBER [Asset].[Class].[Fixed Income].[Derivatives] AS ...https://stackoverflow.com/questions/3976019
复制相似问题