2014-11-14 40 views
0

下面的脚本给出了我想要的结果。任意挑选一个维度以将成员添加到

这感觉就像一个黑客,因为我已将自定义成员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

的标准方法被称为功利维度。如果你是谷歌这个词,你会发现这种方法的几个描述。 “实用程序维度”是指不引用任何数据,但只是为了能够将它们与所有其他维度交叉连接以进行计算而添加到该维度。你可以有一个或多个。

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

这是典型的应用程序,如YTD,MTD,MAT(移动年总计,即在选定日期结束的数据的全年)或比较如增长与前一时期。

+0

好的 - 我想我们有一些时间计算,所以我可以使用它:明天再试。 – whytheq 2014-11-14 20:32:01