MDX:聚合使用命名集(过去7天)

时间:2012-07-10 05:11:26

标签: time mdx

我已经构建了一个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]"))
};  

然后尝试在计算成员上使用它: 创建成员currentcube。[Dmn_ DateTool]。[日期工具]。[过去7天_] 如

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天]显示与常规值相同的值。

感谢阅读,直到这里。

2 个答案:

答案 0 :(得分:1)

我会检查生成的集合有效性,并且它包含正确的成员;某事:

select [Last 7 days] on 0 ...

也许你要反转from / to:Now() - 7:Now而不是Now():Now() - 7 ...

答案 1 :(得分:1)

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

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