我有一个多维数据集,其维度包含父子层次结构和几个不可见的属性。应该查询此维度的唯一方法是通过父子层次结构。
我的问题是如何解析以下MDX名称:
[MyDimension].[All].Children
在这种情况下,选择了一个非可见属性(解析为:[MyDimension].[MyInvisibleAttributeUsedOnlyForOrdering].[All].Children
),这会导致意外结果。
在Excel中使用CUBEMEMBER/CUBEVALUE
函数时出现问题。由于Excel未考虑不可见属性,因此自动完成功能会直接从[MyDimension]
跳转到[MyDimension].[All]
,而不会要求用户指定层次结构。当另一个属性可见时,它工作正常,因为Excel的自动完成强制用户选择其中一个层次结构,导致一个不明确的[MyDimension].[MyParentChildHierarchy].[All].[MyCorrectMembers]
。
一种可能的解决方法是将所有不可见属性设置为不可聚合,这种方式[MyDimension].[All]
仅在我的父子层次结构的范围内有意义,但我正在寻找更好,更通用的解决方案。< / p>
提前感谢您对SSAS行为的任何解决方案或解释。
答案 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