【问题标题】:MDX Calculated Measure summing across all of timeMDX 计算量度总和
【发布时间】:2014-06-16 03:33:59
【问题描述】:

我为 SSRS 报告开发了一个 MDX 查询,该报告有一个名为 CurrentMonthAndAllOfLastYear 的计算度量,它应该将当月的净销售额与上一年的净销售额相加。不幸的是,计算出的衡量标准似乎一直在总结每笔净销售额。 MDX 是:

WITH 
SET [CurrMonth] AS [Sales Period].[Sales Period].CurrentMember --Month
SET [CurrYear] AS ANCESTORS([CurrMonth](0), 2)   --Year
SET [PriorYear] AS [CurrYear](0).LAG(1)   -- Gets prior Year

MEMBER [Measures].[CurrentMonthAndAllOfLastYearAmt] AS SUM({[CurrMonth], [PriorYear]}, Measures].[Net Sales])
MEMBER [Measures].[Debtors Collection Days] AS ([Measures].[Total Owing Amount] * 90) / [Measures].[CurrentMonthAndAllOfLastYearAmt]

SELECT  
{
[Measures].[CurrentMonthAndAllOfLastYearAmt],
[Measures].[Total Owing Amount],
[Measures].[Debtors Collection Days],
[Measures].[Net Sales] } ON COLUMNS,
{
[Sales Period].[Sales Month].[Sales Month].ALLMEMBERS } ON ROWS 
FROM ( SELECT ( YTD(STRTOMEMBER('[Sales Period].[Sales Period].[Sales Month].&[2013-05-31T00:00:00]')) ) ON COLUMNS 
FROM ( SELECT ( STRTOSET('[Sales Representative Mirror].[Sales Representative ID].&[261]') ) ON COLUMNS 
FROM [Sales])) 

MDX sn-p 生成以下内容:

Sales Month CurrentMonthAndAllOfLastYearAmt 
31/01/2013  $320,429.60 ... 
28/02/2013  $320,429.60 ... 
31/03/2013  $320,429.60 ... 
30/04/2013  $320,429.60 ... 
31/05/2013  $320,429.60 ... 

我需要以下输出(2012 年没有任何销售):

Sales Month  CurrentMonthAndAllOfLastYearAmt
31/01/2013  $0.00 ...
28/02/2013  $0.00 ...
31/03/2013  $0.00 ...
30/04/2013  $18,931.10 ...
31/05/2013  $22,557.22 ...

任何帮助将不胜感激。

【问题讨论】:

    标签: sql reporting-services mdx


    【解决方案1】:

    我不会使用集合来执行此操作,而是使用ParallelPeriod MDX 函数。

    MEMBER [Measures].[CurrentMonthAndAllOfLastYearAmt] AS 
       ([Sales Period].[Sales Period].CurrentMember,[Measures].[Net Sales]) 
       + 
       ( ParallelPeriod( [CurrMonth](0), 1, [Sales Period].[Sales Period].CurrentMember), [Measures].[Net Sales] )
    

    很好的问题是每次使用或每次 MDX 请求时都会评估该集合。之后你就有了上下文(使用或不使用 where 和子查询上下文)。

    【讨论】:

    • 感谢您的好建议。我更新了查询,现在出现以下错误:Sales Month CurrentMonthAndAllOfLastYearAmt 2013-01-31 #Error 2013-02-28 #Error 2013-03-31 #Error 2013-04-30 #Error 2013-05-31 #Error
    • 感谢您的好建议。我更新了查询,现在出现以下错误:Sales Month CurrentMonthAndAllOfLastYearAmt 2013-01-31 #Error 2013-02-28 #Error 2013-03-31 #Error 2013-04-30 #Error 2013-05-31 #Error
    • 您应该查看#Error 的内容,它应该会指出哪里出了问题。在 icCube 中,我只想问你也看看调试器 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多