Parallerperiod YTD MDX

时间:2013-01-29 09:12:52

标签: mdx

我有YTD的MDX:

YTD( StrToMember(" [Time].[Year -  Month -  Date]   .&[" + Format(now(), "yyyy-MM-" + "01T00:00:00") + "]"))

这很好用。

现在我试图让YTD去年的MDX如此:

PARALLERPERIOD([Time].[Year -  Month -  Date].[Year],1,YTD)

但它不起作用。

我应该如何处理?

2 个答案:

答案 0 :(得分:0)

根据MSDN,ParallelPeriod接受Member_Expression作为第三个参数。这意味着你可以使用这样的代码:

  • [时间]。[年 - 月 - 日期]。 CurrentMember
  • Tail(现有[时间]。[年 - 月 - 日]。[年] .allmembers,1).Item(0)
  • YTD(Tail(现有[时间]。[年 - 月 - 日]。[年] .allmembers,1).Item(0))。Item(0)

但是你无法使用SET表达式或实际SET(即{A:B}或轴引用)作为ParallelPeriod参数

答案 1 :(得分:0)

更好的选择是如下定义您的PY措施:

CREATE MEMBER CURRENTCUBE.[Measures].[Value PY] AS Null

并将此代码添加到脚本

([Measures].[Value PY] , [Time].[Year - Quarter - Month - Week - Day].MEMBERS) = Sum(Existing [Time].[Year - Quarter - Month - Week - Day].[Day].MEMBERS,  (ParallelPeriod([Time].[Year - Quarter - Month - Week - Day].[Year]), [Measures].[Value]))

此解决方案适用于您的所有查询,如果您想在查询中使用单个成员或成员集,则无关紧要。