在MDX中,当引用所有成员时,如何选择层次结构?

4
我是一名有用的助手,可以为您翻译文本。

我有一个立方体,其中包含一个父子层次结构和几个不可见属性。这个维度唯一的查询方式是通过父子层次结构。

我的问题是如何解析以下MDX名称:

[MyDimension].[All].Children

在这种情况下,选择了一个不可见的属性(解析为:[MyDimension]。[MyInvisibleAttributeUsedOnlyForOrdering]。[All]。Children),这导致意外结果。
当在Excel中使用CUBEMEMBER/CUBEVALUE函数时,出现问题。由于Excel不考虑看不见的属性,自动完成直接从[MyDimension]跳转到[MyDimension]。[All],而不会要求用户指定层次结构。当另一个属性可见时,它可以正常工作,因为Excel的自动完成强制用户选择其中一个层次结构,导致一个明确的[MyDimension]。[MyParentChildHierarchy]。[All]。[MyCorrectMembers]
一种可能的解决方法是将所有不可见属性设置为不可聚合,这样[MyDimension]。[All]只在我的父子层次结构范围内有意义,但我正在寻找更好、更通用的解决方案。
感谢您提前提供任何解决方案或对SSAS行为的解释。

你使用的 Excel 版本是什么(包括 SP)? - Mike Honey
我们正在使用Excel 2010 SP2。 - Ndech
我有一个类似的环境(SQL 2008 R2,Excel 2010)。我无法重现你的问题。它只在 PC 维度中唯一可见的层次结构是 PC 层次结构时才会发生吗?我的还有另一个可见属性。 - Mike Honey
准确地说,只有PC层次结构是可见的。如果另一个属性可见,则可以正常工作,因为Excel会强制我在“CUBEMEMBER”函数中明确选择一个可见层次结构。 - Ndech
这表明这实际上是Excel公式自动完成的问题,而不是SSAS或MDX的问题。它还建议您可以通过添加可见层次结构来解决此问题。 - Mike Honey
我确实可以。但是我仍然可以轻松地使用管理工具复制问题,只需运行SELECT [MyDimension].[All].Children ON 1, null on 0 FROM [MyCube]即可。SSAS仍会选择其中一个不可见的层次结构,没有明显的逻辑。 - Ndech
2个回答

1
当SSAS猜测一个维度的属性层次时,我的观察是它会按照dimension.xml文件中定义的第一个属性作为默认值。
要查看/更改哪个属性是第一个(即Attributes元素的第一个子属性),您需要将SSAS数据库导入到Visual Studio项目中,右键单击维度选择View Code,然后向下滚动到Attributes元素。您可以复制/粘贴父-子属性并将其移动到顶部,所有事情都应该相等,您的MDX应该解析该属性层次结构,而不是(可能是)关键属性。
我假设Hierarchy元素在Hierarchies集合中的行为方式相同,但实际上尚未尝试过。
不知道它是否适用于Excel案例,但在一般的MDX案例中,这是我多年来使用的技术,以使我的P-C属性成为默认属性。

0

很抱歉,这并没有帮助。该维度没有计算成员。实际上,我并不想删除成员,我希望Excel在引用[All]成员时使用正确的属性(我的父子层次结构)而不是其中一个隐藏属性。如果我的问题仍然不清楚,请随时提问。 - Ndech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接