我试图排除期间P13(会计年度结束时的特殊期间)进行一段时间的相对计算,例如使用ParallelPeriod超过12个月的Sum或使用Lag()的平均值。 到目前为止,这是一个MDX:
WITH MEMBER [Measures].[Sum Amount 12 Months]
AS
Sum(
ParallelPeriod( [Time].[Fiscal Calendar].[Fiscal Period],11):[Time].[Fiscal Calendar] ,
[Measures].[Amount]
)
我的层次结构中的期间如下:
2014-P1,....,2014-P12,2014-P13,2015-P1,......
所以这个想法首先是模拟删除所有时期-P13,然后聚合......但我真的需要帮助......
由于
答案 0 :(得分:0)
您可以使用EXCEPT
功能删除P13
。
WITH SET P13PeriodMember
AS TAIL(EXISTS([Time].[Fiscal Calendar].[Fiscal Period].MEMBERS, [Time].[Fiscal Calendar].[Fiscal Year].CURRENTMEMBER), 1).ITEM(0).ITEM(0)
MEMBER [Measures].[Sum Amount 12 Months]
AS
SUM(
EXCEPT(
ParallelPeriod([Time].[Fiscal Calendar].[Fiscal Period].currentmember,11):[Time].[Fiscal Calendar].[Fiscal Period].currentmember,
P13PeriodMember),
[Measures].[Amount]
)
答案 1 :(得分:0)
这是MDX现在正在运行,Sourav_Agasti答案真的很有帮助,但是有关ParallelPeriod参数的问题仍然存在。实际上,如果我们从Set中排除一个成员,我们仍然需要增加我们的参数以便添加1个句点...
可能有一个更简单的解决方案,我很乐意听到它!
WITH
SET P13Periods
AS
{ //Exclude P13 members (hardcode for test)
[Time].[Fiscal Calendar].[Fiscal Period].&[201013],
[Time].[Fiscal Calendar].[Fiscal Period].&[201113],
[Time].[Fiscal Calendar].[Fiscal Period].&[201213],
[Time].[Fiscal Calendar].[Fiscal Period].&[201313]
}
MEMBER [Measures].[Amount Sum 2 Months]
AS
SUM(
//Check if range Period contains a P13
//If yes, then we need to exclude this period from calculation AND add 1 Period to ParallelPeriod
IIF(
EXISTS(
P13Periods,
ParallelPeriod([Time].[Fiscal Calendar].[Fiscal Period],1):[Time].[Fiscal Calendar]
).Count =1
,EXCEPT(
ParallelPeriod([Time].[Fiscal Calendar].[Fiscal Period],2):[Time].[Fiscal Calendar]
,P13Periods
)
,ParallelPeriod([Time].[Fiscal Calendar].[Fiscal Period],1):[Time].[Fiscal Calendar]
)
,
[Measures].[Amount]
)
SELECT {[Measures].[Amount],[Measures].[Amount Sum 2 Months]} on 0
,[Time].[Fiscal Calendar].[Fiscal Period] on 1
FROM [MyCube]