MDX Crossjoin地区和国家/地区总计

时间:2016-03-30 16:55:31

标签: reporting-services mdx

我需要加入两个层次结构,RegionCountry。从我们的立方体我必须得到一个由1个地区和2个国家组成的结果。这就是我到目前为止所做的:

SET [RegionSet] AS 
  {
     [Stores].[Region].&[EUROPE]
  }

SET [CountrySet] AS 
  {
     [Stores].[Country].&[Japan]&[APAC]
    ,[Stores].[Country].&[China]&[APAC]
  }


NON EMPTY
  (
   {
    [RegionSet]
  , [Stores].[Region].[All]
   }
  ) 
* (
   {
    [CountrySet]
  , [Stores].[Country].[All]
   }
  )
    ON ROWS

MSD结果如下:

Resulting table

但我想在没有所有条目的情况下列出一列中的地区和国家/地区,并在最后一行添加总计。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我认为如果你有一个名为[Geography]的多级用户层次结构作为[Stores]维度的一部分,那么我认为这将是微不足道的:

SET [RegionCountrySet] AS 
  {
     [Stores].[Geography].[Region].&[EUROPE]
    ,[Stores].[Geography].[Country].&[Japan]&[APAC]
    ,[Stores].[Geography].[Country].&[China]&[APAC]
  }

...但您可以创建自定义聚合成员。然后在行上使用创建的成员:

  1. 选择未使用的层次结构给" host"你的新成员。我会假设你有[Languages]维度。新成员将作为子项添加到所选层次结构的[All]成员中。

  2. 从目标创建元组,包括每个元组中的主机[All]成员。

  3. 喜欢这个

    MEMBER [Languages].[Language].[All].[EUROPE] AS
        (
           [Languages].[Language].[All]
          ,[Stores].[Region].&[EUROPE]
        )
    MEMBER [Languages].[Language].[All].[Japan] AS
        (
           [Languages].[Language].[All]
          ,[Stores].[Country].&[Japan]&[APAC]
        )  
    MEMBER [Languages].[Language].[All].[China] AS
        (
           [Languages].[Language].[All]
          ,[Stores].[Country].&[China]&[APAC]
        )  
    SET [S1] AS
       {
         [Languages].[Language].[All].[EUROPE]
        ,[Languages].[Language].[All].[Japan] 
        ,[Languages].[Language].[All].[China]
       }
    MEMBER [Languages].[Language].[All].[Grand Total] AS
        Aggregate([S1])
    SET [S2] AS
       {
         [Languages].[Language].[All].[EUROPE]
        ,[Languages].[Language].[All].[Japan] 
        ,[Languages].[Language].[All].[China]
        ,[Languages].[Language].[All].[Grand Total]
       } 
    

    然后在脚本中试试这个

     [S2] ON ROWS