MDX - 获取行上父组的最后一个值

时间:2015-08-18 11:11:42

标签: ssas mdx tail

我有一个数据集应输出每个季度的最后一段(2015年第一季度,第二季度,第三季度,第四季度)。对于最新的段,我的意思是段属性的最后一个值,从其各自的季度的第一周到选定的日期作为参数。

以下查询正在输出

  • 2015 Q1 - C
  • 2015 Q2 - /

问题是从2015年W1 - 2015 W14开始,该段始终为C.在W14之后,该段变为“/”。因此,我认为查询没有考虑YTD功能。

SET [All calendars] AS
    [Date invoice].[Bonus calendar - Quarter].[Bonus Quarter].ALLMEMBERS


SET [Stratum history] AS
    Generate(
        {[All calendars]} AS s
        ,s.Current
            *HEAD(
                NonEmpty
                (
                 [Stratum history].[Stratum].[Stratum]
                ,[Stratum sales average]
                )
            ,1
            )
    )

where子句:

WHERE
//Only calculate for the current bonus year until the current week
StrToMember("[Date invoice].[Bonus year].&[" + CStr(StrToMember(@PAR_Date).Parent.MemberValue) + "]")
*Ytd(StrToMember(@PAR_Date))
*StrToMember(@POS_ID)

如果我将所有日历设置为[日期发票]。[奖金日历 - 季度]。[季度奖金周] .ALLMEMBERS然后我得到全套

2015 W1 - C. ... 2015 W14 - C

查询然后在我的where子句中指定的2015 W14处停止!但我只想在我的行上显示季度级别。

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

如何修改第二组的NonEmpty子句,如下所示:

SET [Stratum history] AS
    Generate(
        {[All calendars]} AS s
        ,s.Current
            *HEAD(
                NonEmpty
                (
                 [Stratum history].[Stratum].[Stratum].MEMBERS
                ,([Stratum sales average], s.Current)
                )
            ,1
            )
    )