首先,我使用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说:
当前成员在查询中的轴上使用的层次结构上更改。 因此,当前成员对其他层次结构的影响相同 未在轴上使用的尺寸也可以改变;这种行为 被称为“自动存在”。
他们给出了计算成员的例子,但我认为这也适用于计算集,我已经读过基于查询的计算集本质上是动态的。也许有人可以告诉我,如果我理解错误或者我的问题还有什么问题。
答案 0 :(得分: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