随意选择要添加成员的维度

时间:2014-11-14 19:46:34

标签: ssas mdx olap

以下脚本给出了我想要的结果。

当我将自定义成员VALUEVALUE_MTD添加到层次结构[Customer].[Country]时,感觉就像黑客一样。我已经任意选择了这个层次结构 - 只是没有使用[Measures][Date].[Calendar],因为它们已经在使用中。

是否有更标准的方法来返回完全相同的单元格集?

WITH 
  MEMBER [Customer].[Country].[VALUE] AS 
    Aggregate([Customer].[Country].[(All)].MEMBERS) 
  MEMBER [Customer].[Country].[VALUE_MTD] AS 
    Aggregate
    (
      PeriodsToDate
      (
        [Date].[Calendar].[Month]
       ,[Date].[Calendar].CurrentMember
      )
     ,[Customer].[Country].[VALUE]
    ) 
SELECT 
  {
    [Customer].[Country].[VALUE]
   ,[Customer].[Country].[VALUE_MTD]
  } ON 0
 ,NON EMPTY 
      {
        [Measures].[Internet Sales Amount]
       ,[Measures].[Internet Order Quantity]
      }
    * 
      Descendants
      (
        {
            [Date].[Calendar].[Month].&[2007]&[12]
          : 
            [Date].[Calendar].[Month].&[2008]&[01]
        }
       ,[Date].[Calendar].[Date]
      ) ON 1
FROM [Adventure Works];

1 个答案:

答案 0 :(得分:1)

标准方法称为实用程序维度。如果您使用Google这个术语,您会发现有关此方法的几种说明。 “实用程序维度”是指不引用任何数据的实用程序维度,但只是添加到多维数据集中,以便能够将它们与所有其他维度交叉连接以进行计算。你可以有一个或多个。

因此,在大多数情况下,维度中没有任何内容。它仅用于计算成员。 (根据实现,如果要为它们提供一些属性,可以在物理上定义属性成员。但是,只有默认成员在事实表的星型模式中引用。然后覆盖属性成员值。在计算脚本中。)

典型的应用是时间计算,如年初至今,MTD,MAT(移动年度总计,即在选定日期结束的全年数据),或者比较增长与前一时期的比较。