MDX如何在报告中创建差异和差异%

MDX如何在报告中创建差异和差异%,mdx,cube,olap-cube,ssas-2008,Mdx,Cube,Olap Cube,Ssas 2008,使用AdventureWorksDW2008R,我有以下数据集 SELECT NON EMPTY { [Measures].[Sales Amount], [Measures].[Total Product Cost], [Measures].[Internet Sales Count] } ON COLUMNS, NON EMPTY { ([Order Date].[Calendar Year].[Calendar Year].ALLMEMBERS ) } DIMENSION PRO

使用AdventureWorksDW2008R,我有以下数据集

SELECT NON EMPTY { 
[Measures].[Sales Amount], [Measures].[Total Product Cost], [Measures].[Internet Sales Count] 
} ON COLUMNS, NON EMPTY 
{ 
([Order Date].[Calendar Year].[Calendar Year].ALLMEMBERS ) 
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM [Adventure Works Cube]
结果如下:

         Sales Amount          Total Product Cost       Internet Sales Count
2005     4342674.0296          2562584.6235             8949
2008     25016003.1911002      14715208.9522001         51449
有没有办法计算报告中每个变量的差异

例如,互联网销售数量的差异为: 51449–8949=42500

而%的方差是 42500/51449=83%

我知道我可以使用以下公式来计算总数:

=Sum(Fields!Internet_Sales_Count.Value, "DataSet1")

有没有办法得到2008年的值并减去2005年的值?

这里有一种可能性:

WITH 
  MEMBER [Measures].[Internet Sales diff] AS 
      (
        [Delivery Date].[Calendar Year].CurrentMember
       ,[Measures].[Internet Sales Amount]
      )
    - 
      (
        [Delivery Date].[Calendar Year].CurrentMember.Lag(1)
       ,[Measures].[Internet Sales Amount]
      ), format_string = '#,###,###,##0.00' 
SELECT 
  NON EMPTY 
    {
      [Measures].[Sales Amount]
     ,[Measures].[Total Product Cost]
     ,[Measures].[Internet Sales Amount]
     ,[Measures].[Internet Sales diff]
    } ON COLUMNS
 ,NON EMPTY 
    {[Delivery Date].[Calendar Year].[Calendar Year].ALLMEMBERS}
  DIMENSION PROPERTIES 
    MEMBER_CAPTION
   ,MEMBER_UNIQUE_NAME
   ON ROWS
FROM [Adventure Works];
上述结果如下:

然后可以这样添加一个百分比度量:

WITH 
  MEMBER [Measures].[Internet Sales diff] AS 
      (
        [Delivery Date].[Calendar Year].CurrentMember
       ,[Measures].[Internet Sales Amount]
      )
    - 
      (
        [Delivery Date].[Calendar Year].CurrentMember.Lag(1)
       ,[Measures].[Internet Sales Amount]
      ) 
   ,format_string = '#,###,###,##0.00' 
  MEMBER [Measures].[Internet Sales diff %] AS 
    IIF
    (
      [Measures].[Internet Sales Amount] = 0
     ,null
     ,
        [Measures].[Internet Sales diff]
      / 
        (
          [Delivery Date].[Calendar Year].CurrentMember.Lag(1)
         ,[Measures].[Internet Sales Amount]
        )
    ) 
   ,format_string = '#,###,###,##0.00%' 
SELECT 
  NON EMPTY 
    {
      [Measures].[Sales Amount]
     ,[Measures].[Total Product Cost]
     ,[Measures].[Internet Sales Amount]
     ,[Measures].[Internet Sales diff]
     ,[Measures].[Internet Sales diff %]
    } ON COLUMNS
 ,NON EMPTY 
    {[Delivery Date].[Calendar Year].[Calendar Year].ALLMEMBERS}
  DIMENSION PROPERTIES 
    MEMBER_CAPTION
   ,MEMBER_UNIQUE_NAME
   ON ROWS
FROM [Adventure Works];
结果如下:


下面是使用
parallelperiod
函数的更好方法:

WITH 
  MEMBER [Measures].[Internet Sales PrevYr] AS 
    IIF
    (
      [Measures].[Internet Sales Amount] = 0
     ,null
     ,(
        [Measures].[Internet Sales Amount]
       ,ParallelPeriod
        (
          [Delivery Date].[Calendar Year].[Calendar Year]
         ,1
         ,[Delivery Date].[Calendar Year].CurrentMember
        )
      )
    ) 
   ,format_string = '$#,###,###,##0.00' 
  MEMBER [Measures].[Internet Sales diff] AS 
    IIF
    (
      [Measures].[Internet Sales Amount] = 0
     ,null
     ,
      [Measures].[Internet Sales Amount] - [Measures].[Internet Sales PrevYr]
    ) 
   ,format_string = '$#,###,###,##0.00' 
  MEMBER [Measures].[Internet Sales diff %] AS 
    IIF
    (
      [Measures].[Internet Sales PrevYr] = 0
     ,null
     ,
      [Measures].[Internet Sales diff] / [Measures].[Internet Sales PrevYr]
    ) 
   ,format_string = '#,###,###,##0.00%' 
SELECT 
  NON EMPTY 
    {
      [Measures].[Internet Sales Amount]
     ,[Measures].[Internet Sales PrevYr]
     ,[Measures].[Internet Sales diff]
     ,[Measures].[Internet Sales diff %]
    } ON COLUMNS
 ,NON EMPTY 
    {[Delivery Date].[Calendar Year].[Calendar Year].MEMBERS} ON ROWS
FROM [Adventure Works];
结果:


好的,我一直在研究这个解决方案,但运气不太好。我想,要使这项功能发挥作用,我需要创建一个称为“[Internet Sales diff]”的度量值,对吗?确切地说:您应该能够在SSRS中的mdx编辑器中添加WITH子句-我假设您正在使用WITH子句。@为什么我对mdx有类似的问题,你能分享你的电子邮件id让我分享这个问题吗,因为我无法在这里发布我的问题,请?@singhswat-尝试将其添加为一个SO问题-然后在这里发布问题的url:我会看一看的(还有一些其他用户会看到它,也可以尝试帮助)