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]})
如您所见,我将[NetPromoterScore]和[Avg Revenue Per Unit]列名称与[AvgRevenuePerUnit]混淆为[Net Promoter Score]列名称。但在我的C#代码中,使用的名称是[Net Promoter Score]和[Avg Revenue Per Unit],我不能用新别名更改这些以前的名称,因为我必须在几十个文件中进行更改然后我必须测试整个应用。我可以在上面的查询中使用两次别名来获取相同的先前列名称,还是可以在没有别名的情况下从上面的查询中获得相同的结果?
答案 0 :(得分:1)
实际上,就MDX而言,您没有为成员添加别名,而是创建了新成员。
我看到两种可能性如何解决这个问题:
将这些计算移动到立方体计算脚本,i。即改名 多维数据集中的原始度量,并定义计算的度量 使用您需要的名称和您拥有的相同计算 在您的查询中。然后,您将进行原始重命名的度量 无形。这将是我眼中最好的解决方案 让每个多维数据集用户从改进中受益,而不会破坏 外部代码或查询。
取决于您在C#代码中引用度量的准确程度 (您没有发布样本),您可以使用标题属性 这些措施,我即重写成员定义如下:
WITH MEMBER [Measures]。[NetPromoterScore] AS IIF(...),CAPTION ='Net Promoter Score' 会员[措施]。[AvgRevenuePerUnit] AS IIF(...),CAPTION ='平均每单位收入'