按层次结构级别排序?

时间:2011-09-16 18:19:58

标签: ssas mdx

我使用ADventureWorksDW 2008 R2 SSAS数据库来重新创建我的问题。我有两个问题,但一个不起作用,我想了解原因。第一个不使用用户层次结构,第二个没有正确排序,正在使用层次结构[Sales Territory]。

对我来说,让第二个查询正常运行非常重要,因为我想从维度中删除[Sales Territory]。[Sales Territory Country]属性。通常,如果我将诸如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] )

1 个答案:

答案 0 :(得分:2)

您可以使用另一种方法,以避免用户混淆同时提供属性和层次结构。

这是将基础属性标记为隐藏(不可见),然后将其包含在层次结构中(可能只是单级层次结构)。这为您提供了在没有名称冲突的情况下提供层次结构的所有优点。这是我过去在MSAS项目中成功使用的一种方法。

不能完全回答您的订购问题,但希望能为您提供另一种探索选择。