首先,我使用 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 说:
当前成员在查询中轴上使用的层次结构上发生变化。因此,同一维度上其他层次结构中未在轴上使用的当前成员也可以更改;这种行为称为“自动存在”。
他们给出了计算成员的例子,但我认为这也应该适用于计算集,我读过基于查询的计算集本质上是动态的。也许有人可以告诉我,如果我理解错了,或者我在这里还有什么问题。