MDX - 如何排除相对计算的时间段

时间:2015-01-13 16:34:14

标签: time mdx period

我试图排除期间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,然后聚合......但我真的需要帮助......

由于

2 个答案:

答案 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]