在MDX中的不同时间段的不同时间段内,在两列中获得相同的度量



需要在MDX中产生特定的输出,我正在努力产生所需的结果。我正在尝试使用ADW Cube构建示例。

我需要制作一个有三列的表:

  1. 某些类别(此示例中的城市,但本专栏将最终根据SSR中的选定参数动态更改),
  2. 针对特定月份的类别(本示例中的互联网销售)的某种措施
  3. 与第二列相同的度量,但在上个月

该表应仅根据第二列中的度量将表滤光到前三名。

下面是我到目前为止得到的一个简单的静态示例,但是这个想法基本上是这样:用户选择了参数中的一些值,这些值将对表进行过滤的数据(由[Country](Canada)表示)在示例中)。然后,他将在某些层次结构中选择粒度级别,他希望得到自己的结果(示例中的[城市]代表)。他将选择所需的期间(具体[年]和[月])。运行查询时,他应该得到与下面相似的表(在第二列中他拥有前三名的结果):

Category      Internet Sales Amount (CurrentPeriod) Internet Sales Amount (PreviousPeriod)
Langford      $13,468.39                             null
Vancouver     $12,291.48                             $7,447.26
Sooke         $11,563.01                             null

第一列代表所选的粒度。第二列代表给定项目选定的年度组合的互联网销售,第三列代表在选择组合前的一个月内互联网销售。

这是我到目前为止得到的。我能够制作表的前两列,但我也很难包括第三列。我来自SQL,是MDX的新手,所以请忍受我的要求,如果我的要求很简单,或者我的方法到目前为止的方法还很遥不可及。

SELECT [Measures].[Internet Sales Amount] ON 0,  
TopCount  
   ({[Customer].[City].[City].Members}  
   , 3  
   , [Measures].[Internet Sales Amount]
   ) ON 1  
FROM [Adventure Works]  
WHERE ( [Customer].[Country].&[Canada], 
        [Date].[Calendar Year].&[2007], 
        [Date].[Month of Year].&[12] )

好吧,我设法解决了这个简化的示例。

WITH 
  MEMBER [Measures].[SalesPrevMth] AS 
    (
      [Measures].[Internet Sales Amount]
     ,[Date].[Calendar].CurrentMember.PrevMember
    ) 
SELECT 
  NON EMPTY 
    {
      [Measures].[Internet Sales Amount]
     ,[Measures].[SalesPrevMth]
    } ON COLUMNS
 ,NON EMPTY 
    TopCount  
     ({
        [Customer].[City].[City].Members
      * 
        [Date].[Calendar].[Month].ALLMEMBERS
      }, 3, [Measures].[Internet Sales Amount]) ON ROWS
FROM 
(
  SELECT 
    [Date].[Calendar].[Month].&[2007]&[12] ON COLUMNS
  FROM [Adventure Works]
)
WHERE [Customer].[Country].&[Canada];

最新更新