2012-05-08 58 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。它非常強大,你可以用它做一些整潔的事情。