2011-09-16 168 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项目中成功使用的一种方法。

不完全回答您的订购问题,但它有希望给你另一种选择探索。