0

我已经建立了一个 DataCalculation 维度,它应该有一个基于时间的计算。它应该为过去 7 天、并行期间等的每个度量值求和。我已经为过去 7 天建立了一个命名集:

CREATE  SET CURRENTCUBE.[Last 7 days]
AS {
StrToMember(Cstr("[Dmn_Dates].[date calc].&["+
Cstr(Format(Now(),"yyyy-MM-dd")) +"T00:00:00]"))
:
StrToMember(Cstr("[Dmn_Dates].[Date calc].&["+
Cstr(Format(Now()-7,"yyyy-MM-dd")) +"T00:00:00]"))
};  

然后尝试在计算成员上使用它: create member currentcube.[Dmn_ DateTool].[Date Tool].[Last 7 Days_] as

aggregate(
{
StrToMember(Cstr("[Dmn_Dates].[date calc].&["+
Cstr(Format(Now(),"yyyy-MM-dd")) +"T00:00:00]"))
:
StrToMember(Cstr("[Dmn_Dates].[Date calc].&["+
Cstr(Format(Now()-7,"yyyy-MM-dd")) +"T00:00:00]"))
}
,([Dmn_ DateTool].[Date Tool].[regular],measures.LeadCounter))
, visible = 1; 

它不起作用。我得到的是一个计算出来的成员 [过去 7 天],它显示的值与常规值相同。

感谢阅读直到这里。

4

2 回答 2

1

我会检查生成的集合有效性以及它是否包含正确的成员;某事喜欢:

select [Last 7 days] on 0 ...

也许你必须颠倒 from/to : Now() - 7 : Now 而不是 Now() : Now() - 7 ...

于 2012-07-10T05:44:12.337 回答
1

当您在像 member1: member2 这样的表达式中使用Range 运算符时,member1 必须按层次顺序排在 member2 之前。否则范围运算符将返回一个空集。

此外,您必须确保您的表达式StrToMember(Cstr("[Dmn_Dates].[date calc].&["+Cstr(Format(Now(),"yyyy-MM-dd")) +"T00:00:00]"))真的返回一个现有成员: null:null返回空集。

于 2012-07-10T06:28:39.383 回答