2011-09-16 55 views
1

我已經使用ADventureWorksDW 2008 R2 SSAS數據庫重新創建我的問題。我有兩個查詢,但一個不起作用,我想知道爲什麼。第一種不使用用戶層次結構,第二種不正確排序,正在使用層次結構[Sales Territory]。按層次結構排序?

對於我來說,讓第二個查詢正常工作非常重要,因爲我想從維度中刪除[Sales Territory]。[Sales Territory Country]屬性。通常情況下,如果我已將諸如國家/地區等屬性放入層次結構中,那麼我將從該維度中移除該屬性,以使其僅在層次結構下可用(遵循推薦的最佳做法,以避免用戶出現多重屬性時出現混淆在維度中的位置)。

那麼,如何才能使第二個查詢的行爲像第一個,以正確排序國家?

//Works 
Select 
{ 
    ([Measures].[Reseller Sales Amount]) 
} on columns 
, 
non empty 
    Order(
    ([Sales Territory].[Sales Territory Country].[Sales Territory Country].Members), 
    [Sales Territory].[Sales Territory Country].CurrentMember.Name,DESC) on rows 
From [Adventure Works] 
Where ([CY 2007]) 

GO 

//Doesn't work in that countries aren't sorted 
Select 
{ 
    ([Measures].[Reseller Sales Amount]) 
} on columns 
, 
non empty 
    Order(
    ([Sales Territory].[Sales Territory].[Country].Members), 
    [Sales Territory].[Sales Territory].CurrentMember.Name,DESC) on rows 
From [Adventure Works] 
Where ([CY 2007]) 

回答

2

有可以使用,以避免同時具有屬性和可用的層次結構中的用戶混淆的另一種方法。

這是爲了將底層屬性標記爲隱藏(不可見),然後將其包含在層次結構中(可能只是單層結構)。這爲您提供了沒有名稱衝突的層次結構的所有優點。這是我以前在MSAS項目中成功使用的一種方法。

不完全回答您的訂購問題,但它有希望給你另一種選擇探索。