Ssas MDX语句不返回任何内容

Ssas MDX语句不返回任何内容,ssas,olap,olap-cube,Ssas,Olap,Olap Cube,我有一个名为ExDimension的维度,有一个名为ExAttribute的属性。我目前在该维度中有2个成员以及unknownmember及其数据。当我运行下面的MDX时,我什么也没有得到,我不明白为什么。有人能告诉我去哪里看吗 SELECT { [ExDimension].[ExAttribute].CHILDREN } DIMENSION PROPERTIES [ExDimension].[ExAttribute].[Attribute Code],

我有一个名为
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]

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

子项
对成员起作用,请参见。你给它一个层次结构。在这种情况下,SSAS将隐式类型转换为层次结构的默认成员。即。代码

[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
函数。但是我更喜欢显式的,特别是因为这样代码不会变得太长。

[ExDimension].[ExAttribute].[ExAttribute]替换
[ExDimension].[ExAttribute].[ExAttribute].Members
时会得到什么?是否确定维度和属性名称中没有类型?AnalysisServices的默认设置是,如果引用了不存在的属性,则不会显示错误,而只是默默地忽略它们。。。一切看起来都很好。这是我不理解的,因为这个查询结构将适用于我的所有其他维度/属性奇妙的解释!这就是我学习的方式。非常感谢你!