0
WITH MEMBER [Measures].[NetPromoterScore] AS (IIF(([Measures].[Net Promoter Score] = 1/0 OR 
[Measures].[Net Promoter Score] = -1/0 OR ISEMPTY([Measures].[Net Promoter Score]) 
OR [Measures].[Avg Revenue Per Unit] = 1/0 OR [Measures].[Avg Revenue Per Unit] = -1/0 OR 
ISEMPTY([Measures].[Avg Revenue Per Unit]) ), NULL, [Measures].[Net Promoter Score])) 

MEMBER [Measures].[AvgRevenuePerUnit] AS (IIF(([Measures].[Net Promoter Score] = 1/0 
OR [Measures].[Net Promoter Score] = -1/0 OR ISEMPTY([Measures].[Net Promoter Score]) 
OR [Measures].[Avg Revenue Per Unit] = 1/0 OR [Measures].[Avg Revenue Per Unit] = -1/0 
OR ISEMPTY([Measures].[Avg Revenue Per Unit]) ), NULL, [Measures].[Avg Revenue Per Unit]))

SELECT NON EMPTY
       { {[Measures].[NetPromoterScore],[Measures].[AvgRevenuePerUnit]} }
       ON COLUMNS ,
       NON EMPTY
       {{Hierarchize(DrilldownLevel({[Roles].[Enterprise Role].[ALL]}))}}
       DIMENSION  PROPERTIES MEMBER_CAPTION,  MEMBER_UNIQUE_NAME
       ON ROWS
  from Enterprise 
 WHERE (FILTER( [Employees].[EID].[EID],[Measures].[Avg Revenue Per Unit]> 700),
        {[Areas].[Area].&[3]},
        {[Markets].[Market].&[1]},{[Regions].[Region].&[2]},{[Locations].[Location].&[6],[Locations].[Location].&[6]},
        {[Dates].[Date].&[20130219]:[Dates].[Date].&[20130318]})

如您所见,我将 [Net Promoter Score] 列名称与 [NetPromoterScore] 和 [Avg Revenue Per Unit] 列名称与 [AvgRevenuePerUnit] 进行了别名。但是在我的 C# 代码中,使用的名称是 [Net Promoter Score] 和 [Avg Revenue Per Unit],我不能用新的别名更改这些以前的名称,因为我必须在几十个文件中进行更改,然后我必须测试整个应用程序。我可以在上面的查询中使用两次别名以获得相同的先前列名,还是可以在没有别名的情况下从上面的查询中获得相同的结果?

4

1 回答 1

1

实际上,在 MDX 的意义上,您并没有给成员起别名,而是创建了新成员。

我看到了两种解决方法:

  1. 将这些计算移至多维数据集计算脚本,即重命名多维数据集中的原始度量,并使用您需要的名称和查询中的相同计算定义计算度量。然后,您将使原始重命名的度量不可见。在我看来,这将是最好的解决方案,因为它可以让每个立方体用户都从改进中受益,而不会破坏外部代码或查询。

  2. 根据您在 C# 代码中引用度量的准确程度(您没有发布示例),您可以只使用度量的标题属性,即重新编写成员定义,如下所示:

    WITH MEMBER [Measures].[NetPromoterScore] AS IIF(...), CAPTION = 'Net Promoter Score' MEMBER [Measures].[AvgRevenuePerUnit] AS IIF(...), CAPTION = 'Avg Revenue Per Unit'

于 2013-10-08T12:47:56.437 回答