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

时间:2015-06-05 12:20:20

标签: ssas mdx ssas-2012

我有一个多维数据集,其维度包含父子层次结构和几个不可见的属性。应该查询此维度的唯一方法是通过父子层次结构。

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

[MyDimension].[All].Children

在这种情况下,选择了一个非可见属性(解析为:[MyDimension].[MyInvisibleAttributeUsedOnlyForOrdering].[All].Children),这会导致意外结果。

在Excel中使用CUBEMEMBER/CUBEVALUE函数时出现问题。由于Excel未考虑不可见属性,因此自动完成功能会直接从[MyDimension]跳转到[MyDimension].[All],而不会要求用户指定层次结构。当另一个属性可见时,它工作正常,因为Excel的自动完成强制用户选择其中一个层次结构,导致一个不明确的[MyDimension].[MyParentChildHierarchy].[All].[MyCorrectMembers]

一种可能的解决方法是将所有不可见属性设置为不可聚合,这种方式[MyDimension].[All]仅在我的父子层次结构的范围内有意义,但我正在寻找更好,更通用的解决方案。< / p>

提前感谢您对SSAS行为的任何解决方案或解释。

2 个答案:

答案 0 :(得分:1)

当SSAS猜测维度的属性层次结构时,我的观察是它采用了dimension.xml文件中定义的第一个。

为了查看/更改首先属性(即Attributes元素的第一个子属性),您需要将SSAS数据库导入Visual Studio项目,右键单击维度选择View Code,然后向下滚动到Attributes元素。您可以复制/粘贴父子属性并将其移动到顶部,并且所有事情都等于您的MDX应该针对该属性层次结构而不是(可能)关键属性进行解析。

我假设层次结构元素在Hierarchies集合中的行为方式相同,但实际上并没有尝试过。

不知道它是否适用于Excel案例,但在一般的MDX案例中,这是我多年来一直使用的技术,将我的PC属性作为默认属性。

答案 1 :(得分:0)

函数StripCalculatedMembers是否有助于您的情况?
我认为它可能会删除超出您想删除的内容。

MSDN参考在这里:https://msdn.microsoft.com/en-us/library/ms145983.aspx