创建命名集

时间:2015-04-01 18:09:57

标签: ssas mdx

我正在尝试创建一个命名集,该集合将返回任何度量的所选成员的总和。我部署时遇到错误

  

函数需要参数的元组集表达式。字符串或   使用了数字表达式。

请查看我的代码并提出建议解决方案。我有一个名为Uline的维度,这个命名集应该为这个维度的4个成员选择总和为任何度量

    sum({[Uline].[CU - (46)],
         [Uline].[FRU - (45)], 
         [Uline].[GL - (38)],
         [Uline].[PU - (44)]},[Measures].CurrentMember)

1 个答案:

答案 0 :(得分:0)

如果您希望其可用于任何衡量标准,最好使用Aggregate而不是Sum

也不需要在函数中包含Measures层次结构。

所以尝试更简单的事情:

Aggregate(
  {
   [Uline].[CU - (46)],
   [Uline].[FRU - (45)], 
   [Uline].[GL - (38)],
   [Uline].[PU - (44)]
  }
) 

请注意,这将是现有层次结构中的新成员,如下所示:

WITH MEMBER [Uline].[AggSet] AS
  Aggregate(
    {
     [Uline].[CU - (46)],
     [Uline].[FRU - (45)], 
     [Uline].[GL - (38)],
     [Uline].[PU - (44)]
    }
  ) 
SELECT
  [Measures].[SOMEMEASUREinCUBE] ON 0,
  [Uline].[AggSet] ON 1
FROM [CubeName];

我自己不会使用实际的多维数据集脚本,但我猜这些可以像这样实现:

CREATE MEMBER CURRENTCUBE.Uline.AggSet  AS 
     'Aggregate(
        {
         [Uline].[CU - (46)],
         [Uline].[FRU - (45)], 
         [Uline].[GL - (38)],
         [Uline].[PU - (44)]
        }
      )'

如果您更愿意创建自定义集而不是计算成员,请尝试以下操作:

CREATE SET CURRENTCUBE.[AggSet]  AS 
        {
         [Uline].[CU - (46)],
         [Uline].[FRU - (45)], 
         [Uline].[GL - (38)],
         [Uline].[PU - (44)]
        }   
 ,
 Display_Folder = 'Sets'; 

花括号{}表示mdx中的SET

在脚本的上下文中,如下所示:

WITH SET [AggSet] AS
    {
     [Uline].[CU - (46)],
     [Uline].[FRU - (45)], 
     [Uline].[GL - (38)],
     [Uline].[PU - (44)]
    }
SELECT
  [Measures].[SOMEMEASUREinCUBE] ON 0,
  [AggSet] ON 1
FROM [CubeName];