Ssas 按层级排序?

Ssas 按层级排序?,ssas,mdx,Ssas,Mdx,我已经使用ADventureWorksDW 2008 R2 SSAS db重新创建了我的问题。我有两个问题,但其中一个不起作用,我想了解原因。第一个不是使用用户层次结构,第二个排序不正确的是使用层次结构[Sales Territory] 让第二个查询正常运行对我来说很重要,因为我想从维度中删除[Sales Territory].[Sales Territory Country]属性。通常情况下,如果我已将一个属性(如Country)放置到层次结构中,那么我会将该属性从维度中删除,以便它仅在层次结

我已经使用ADventureWorksDW 2008 R2 SSAS db重新创建了我的问题。我有两个问题,但其中一个不起作用,我想了解原因。第一个不是使用用户层次结构,第二个排序不正确的是使用层次结构[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] )

您可以使用另一种方法,以避免由于属性和层次结构都可用而导致用户混淆

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

并不能完全回答您的订购问题,但希望它能为您提供另一个探索的选项