我有一个名为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]
答案 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
函数。但我更喜欢明确,特别是因为代码不会那么长。