MDX声明没有任何回报

时间:2014-03-18 19:04:16

标签: ssas olap olap-cube

我有一个名为ExDimension的维度,其中包含一个名为ExAttribute的单一属性。我目前在该维度中有2个成员以及unknownmember的数据。当我运行以下MDX时,我什么也得不到,我不明白为什么。任何人都可以给我一个指导方向吗?

SELECT 
{
    [ExDimension].[ExAttribute].CHILDREN
} 
DIMENSION PROPERTIES [ExDimension].[ExAttribute].[Attribute Code], 
                     [ExDimension].[ExAttribute].[Company], 
                     [ExDimension].[ExAttribute].[Is Current], 
                     [ExDimension].[ExAttribute].[Is Current Store], 
                     [ExDimension].[ExAttribute].[Is Current Chain], 
                     [ExDimension].[ExAttribute].[Attribute Label] 
ON 0 FROM [CR Data Warehouse]

1 个答案:

答案 0 :(得分:1)

您的代码依赖于Analysis Services的隐式类型转换:

Children适用于会员,请参阅documentation。你给它一个层次结构。在这种情况下,SSAS会对层次结构的默认成员进行隐式类型转换。 I. e。代码

[ExDimension].[ExAttribute].CHILDREN

相当于

[ExDimension].[ExAttribute].DefaultMember.CHILDREN

在标准情况下,这可以作为默认成员使用All成员,其中所有“普通”成员都是其子成员。我假设您的ExAttribute层次结构具有默认成员,该成员不是All成员,而是底层成员。并且没有子节点,因此上面的表达式返回空集。

假设您的目的是获取除ExAttribute成员之外的All属性层次结构的成员,我首选的编码方式是使用

[ExDimension].[ExAttribute].[ExAttribute].Members

这不使用隐式类型转换,并使用ExAttribute属性层次结构的ExAttribute级别。属性层次结构通常有两个级别:All级别仅包含All成员,级别命名为属性,其中包含直接来自维度表的所有成员。可能存在差异:如果将属性属性IsAggregatable设置为false,则会遗漏All成员和All级别,并且您可以将计算成员添加到这两个级别。

你甚至可以使用

[ExDimension].[ExAttribute].[ExAttribute]

同样,如果您有一个级别并且需要一个集合,则存在隐式类型转换:此隐式类型转换应用Members函数。但我更喜欢明确,特别是因为代码不会那么长。