2014-10-29 488 views
0

我有一些MDX在我的SSAS多維數據集是這樣的:MDX範圍賦值返回值相同

CREATE MEMBER CURRENTCUBE.[Measures].[xx] AS 1; 

SCOPE ([Measures].[xx]); 

    SCOPE ([Measures].[xx], [DimA].[DimA Hierarchy].Members); 
     This= 20; 
    END SCOPE; 

    SCOPE ([Measures].[xx], [DimB].[DimB Hierarchy].Members); 
     This= 2; 
    END SCOPE; 

END SCOPE; 

瀏覽立方體和選擇[xx]的措施總是返回2,不管我用迪馬,DimB或根本沒有尺寸。

如果我交換內部作用域刪除的順序(即DimB在DimA之前的作用域),無論如何,我都會得到20個作用域。

顯然我做錯了什麼?

回答

0

SCOPE只有在層次結構成員的子集上使用它時纔有意義。

[DimB].[DimB Hierarchy].Members[DimA].[DimA Hierarchy].Members對範圍沒有影響,因爲它們指的是所有層次結構的成員。因此,其中一個始終是當前成員,而最後一個範圍總是被使用。除了在該層次上定義一個計算成員,並且它是當前成員。

您可能希望至少排除All成員,以便SCOPE僅用於此成員的其他成員,如果您根本不使用層次結構,則默認爲當前成員。在DimA Hierarchy是屬性層次結構而不是用戶層次結構的情況下,可以使用[DimA].[DimA Hierarchy].[DimA Hierarchy].Members獲取DimA Hierarchy級別的成員,這些成員都是除All成員之外的所有成員。

+0

好了,這是有道理的。謝謝。 – user2999794 2014-11-04 14:03:59

0

嘗試這樣:

CREATE MEMBER CURRENTCUBE.[Measures].[xx] AS 1; 

SCOPE ([Measures].[xx]); 

    SCOPE ([DimA].[DimA Hierarchy].Members); 
     This= 20; 
    END SCOPE; 

    SCOPE ([DimB].[DimB Hierarchy].Members); 
     This= 2; 
    END SCOPE; 

END SCOPE;