当我使用SSAS编写scopes语句来计算多维数据集中的Calendar Year-To-Date值时,我遇到了问题。
这是我的日期维度及其层次结构:
在度量组中,我有一个名为[Sales Amount]的度量,它是日期中每个项目的销售额。我想计算年初至今的价值。这是我的范围说明,但它不能很好地运作。
SCOPE(MEASURES.[YTD Sales]);
--Calendar YTD
SCOPE([DimDates].[Year-Qtr-Month-Day].MEMBERS, [DimDates].[Year].[Year].MEMBERS);
THIS = AGGREGATE(
PERIODSTODATE([Date].[Year].[Year], [Date].[Year].CURRENTMEMBER),
[Measures].[Sales Amount]);
END SCOPE;
END SCOPE;
答案 0 :(得分:0)
(我自己不玩多维数据集脚本,所以在黑暗中稍微感觉一下)
我认为你需要不将一年成员作为PERIODSTODATE
函数中的第二个参数:它需要一个较低级别的成员来了解在哪里进行ytd计算至。所以看看你当前的脚本,我认为你应该在函数内使用 user 层次结构[Year-Qtr-Month-Day]
而不是属性层次结构[Year]
?
SCOPE(MEASURES.[YTD Sales]);
--Calendar YTD
SCOPE([DimDates].[Year-Qtr-Month-Day].MEMBERS, [DimDates].[Year].[Year].MEMBERS);
THIS = AGGREGATE(
PERIODSTODATE([DimDates].[Year-Qtr-Month-Day].[Year], [DimDates].[Year-Qtr-Month-Day].CURRENTMEMBER),
[Measures].[Sales Amount]);
END SCOPE;
END SCOPE;
这可以通过YTD
功能简化吗?
查看MSDN
我可以看到以下内容:https://msdn.microsoft.com/en-us/library/ms146039.aspx
应用到您的脚本可能会提供如下内容:
SCOPE(MEASURES.[YTD Sales]);
--Calendar YTD
SCOPE([DimDates].[Year-Qtr-Month-Day].MEMBERS, [DimDates].[Year].[Year].MEMBERS);
THIS = AGGREGATE(YTD(), [Measures].[Sales Amount]);
END SCOPE;
END SCOPE;
答案 1 :(得分:0)
感谢您的回答以及您对我的帖子的更正:-D
我看过你关于YTD()函数的教程,它并不是我想要的想法,但它给我的工作提供了一些想法。最后,我的脚本效果很好。我进一步分享了另一个人的代码 (谢谢你能为我纠正我的英语:p)
CALCULATE;
SCOPE([Measures].[Sales Amount YTD]);
--Calendar YTD
SCOPE([DimDates].[Date].MEMBERS, [DimDates].[Year].[Year].MEMBERS);
THIS = AGGREGATE(
PERIODSTODATE([DimDates].[Year-Qtr-Month-Day].[Year], [DimDates].[Year-Qtr-Month-Day].CURRENTMEMBER),
[Measures].[Sales Amount]);
END SCOPE;
End scope;