2012-05-08 57 views
0

让我们举一个简单的方案:具有两个维度D1和D2的事实表F.覆盖已计算成员(SSAS)上的上下文维度

F D1 D2 
10 A B 
15 B C 

在这种情况下我定义使用比接近的表达一个新的计算构件C1这一个:

with member measures.C1 as 
sum(
    descendants([D1].[Ds].currentMember, , leaves), 
    [myMeasure] 
) 
select 
measures.C1 on 0, 
[D2].[Ds].AllMembers on 1 
    from [MyCube] 

如何修改C1至incorpore所有时间所有D2成员表达?

我得到这个结果:

C1 D2 
10 B 
15 C 

,我期待这个:

C1 D2 
35 B 
35 C 

(当然这是真正的问题简单化,请不要尝试修复C1表达,只添加代码以获得预期的结果,我曾与尝试:

sum(
    { descendants([D1].[Ds].currentMember, , leaves), 
    [D2].[Ds].AllMembers }, 
    [myMeasure] 

unsuccesfully)

关于。

+0

我不确定我是否理解您的期望输出。你能解释为什么35 B会显示两次吗? – Rick

+0

@瑞克,感谢您的评论。修复答案。 – danihp

回答

1

对于此特定示例,请更改您的成员声明以下内容。

WITH MEMBER [Measures].[C1] AS 
SUM([D1].[Ds].[All], [myMeasure]) 

这会为您提供测量的所有维度。那么应该为您的D2维度中的每个属性重复该值。

根据问题的标题和一些文字,这只是一个小例子。有可能你需要调查scope。它非常强大,你可以用它做一些整洁的事情。