1

首先,我使用 SQL Management Studio 进行此查询(没有似乎有问题的 Excel 2007):

WITH
    SET [Project period dates] AS 
    {
        StrToMember("[Time].[Date].&[" + [Project].[ParentProject].CURRENTMEMBER.PROPERTIES("Project Start Iso") + "]"):
        StrToMember("[Time].[Date].&[" + [Project].[ParentProject].CURRENTMEMBER.PROPERTIES("Project End Iso") + "]")
    }
    MEMBER [Measures].[Test] AS ([Project period dates].COUNT)
SELECT
{
    [Measures].[Test]
}
on 0,
    NONEMPTY ([Project].[ParentProject].MEMBERS)
    DIMENSION PROPERTIES [Project].[ParentProject].[Project Duration], [Project].[ParentProject].[Project Start Iso], [Project].[ParentProject].[Project End Iso]
on 1
FROM
    [MyCube]
WHERE
(
    [Orgunit].[Orgunit].&[448]
)

此查询提供了一个项目列表,其中包含三个属性和一个基于我的计算集的计算成员。属性显示正确的值,但计算的成员始终显示相同:应该为其计算的第一个项目的结果。

我真的不明白为什么,因为 MSDN 说:

当前成员在查询中轴上使用的层次结构上发生变化。因此,同一维度上其他层次结构中未在轴上使用的当前成员也可以更改;这种行为称为“自动存在”。

他们给出了计算成员的例子,但我认为这也应该适用于计算集,我读过基于查询的计算集本质上是动态的。也许有人可以告诉我,如果我理解错了,或者我在这里还有什么问题。

4

1 回答 1

1

命名集仅在查询中计算一次。这就是为什么您的计算成员总是返回相同的值。

您只需从查询中删除命名集:

MEMBER [Measures].[Test] AS  {
    StrToMember("[Time].[Date].&[" + [Project].[ParentProject].CURRENTMEMBER.PROPERTIES("Project Start Iso") + "]"):
    StrToMember("[Time].[Date].&[" + [Project].[ParentProject].CURRENTMEMBER.PROPERTIES("Project End Iso") + "]")
}.COUNT
于 2013-07-12T14:18:23.970 回答