Sql server MDX,SSAS 2005计算SPLY(去年同期)
我正在努力实现以下目标:我有一个度量:[度量][销售]和一个时间维度:[时间][年-月-日]。我想通过以下方式添加新的度量:[Measures].[Sales SPLY]: 月份------------销售额------------销售额 2009年1月------12万,00------11万,00 2009年2月------100000,00------9000000,00 2009年3月------120 000,00------110 000,00 总计:340000,00-------290000,00 [Sales SPLY]的值是通过以下方式计算的:我创建了一个新的总和度量,并在多维数据集脚本中用以下代码替换它:Sql server MDX,SSAS 2005计算SPLY(去年同期),sql-server,ssas,mdx,Sql Server,Ssas,Mdx,我正在努力实现以下目标:我有一个度量:[度量][销售]和一个时间维度:[时间][年-月-日]。我想通过以下方式添加新的度量:[Measures].[Sales SPLY]: 月份------------销售额------------销售额 2009年1月------12万,00------11万,00 2009年2月------100000,00------9000000,00 2009年3月------120 000,00------110 000,00 总计:340000,00-------
([Measures].[Sales SPLY], Leaves([Time])) = (PARALLELPERIOD([Time].[Year - Month - Day].[Year],1,[Time].[Year - Month - Day].currentmember), [MEASURES].[Sales])
它正在工作,但是非常非常慢。有人知道写这个MDX更好的方法吗?在计算成员中仅使用Pararel期间将导致SPLY度量中的合计值不正确。拜托,我在谷歌上搜索了很多,找不到比这更好的了 我倾向于创建一个像
WITH
MEMBER [Measures].[Sales SPLY] as ([Measures].[Sales], ParallelPeriod([Time].[Year - Month - Day].[Year],1,[Time].[Year - Month - Day].currentmember))
SELECT {[Measures].[Sales], [Measures].[Sales SPLY]} ON 0, ....
而且效果很好
在整个查询中,您是如何使用它的
Rob我倾向于创建一个像
WITH
MEMBER [Measures].[Sales SPLY] as ([Measures].[Sales], ParallelPeriod([Time].[Year - Month - Day].[Year],1,[Time].[Year - Month - Day].currentmember))
SELECT {[Measures].[Sales], [Measures].[Sales SPLY]} ON 0, ....
而且效果很好
在整个查询中,您是如何使用它的
Rob我需要将其作为成员添加到多维数据集。您提供的查询将返回良好的结果。但是,当用户浏览多维数据集时,展开时间维度并仅选择一年中的一部分,SPLY的总数是错误的(它是前一年的总和)。这里提到的问题是:但是我可以找到解决方案…使用ParallelPeriod和YTD组合的LastYearToDate成员是否会有帮助?对不起,Adam-我必须运行。。。我稍后再查看。不幸的是,用户可以选择包含两个月的时间段:2008年12月和2009年1月,销售数据应该显示2007年12月和2008年1月的销售总额。是的,应该没有问题。让我检查一下自己的一个多维数据集,看看它的行为是否符合我的想法。我需要将其作为成员添加到多维数据集。您提供的查询将返回良好的结果。但是,当用户浏览多维数据集时,展开时间维度并仅选择一年中的一部分,SPLY的总数是错误的(它是前一年的总和)。这里提到的问题是:但是我可以找到解决方案…使用ParallelPeriod和YTD组合的LastYearToDate成员是否会有帮助?对不起,Adam-我必须运行。。。我稍后再查看。不幸的是,用户可以选择包含两个月的时间段:2008年12月和2009年1月,销售数据应该显示2007年12月和2008年1月的销售总额。是的,应该没有问题。让我检查一下自己的一个立方体,看看它的行为是否与我所认为的一样。