我们在 AS 2008 中构建了一个包含两个多维数据集的解决方案,其工作方式如下:一个包含所有客户端的小部件数据的行业多维数据集,以及一个包含小部件数据并与行业共享多个(但不是全部)维度的客户端多维数据集。Industry 多维数据集包含所有人,包括调用客户端,因此当客户端提取行业度量时,我们希望结果包括其他所有人。客户在 Industry 多维数据集中以“客户”维度表示,该维度只有两个成员:键和客户名称。行业多维数据集的计数度量称为 [I Widget Count],客户端多维数据集中的相同度量称为 [Widget Count]。
像这样的 MDX 表达式在查询编辑器中效果很好:
WITH SET [Industry] AS Except( [Cube Clients].[Client].[All].Children
, [Cube Clients].[Client].[Client 05] )
MEMBER [Measures].[Industry Widget Count] AS sum( [Industry], [I Widget Count] )
SELECT ({ [Widget Count]
, [Industry Widget Count]
, [I Widget Count] }) on 0
FROM [Client 05 Cube]
一切似乎都很好,客户和行业的数量是完美的。向轴 1 添加共享或非共享维度也可以,并且一切看起来都很棒。
一旦我将集合添加到多维数据集本身,求和函数就会停止给出正确的答案。因此,在计算度量屏幕中,我添加了:
CREATE DYNAMIC SET CURRENTCUBE.[Industry]
AS Except( [Cube Clients].[Client].[All].Children
, [Cube Clients].[Client].[Client 05] ) ;
CREATE MEMBER CURRENTCUBE.[Measures].[Industry Widget Count]
AS sum( [Industry], [I Widget Count] ),
VISIBLE = 1 ;
在多维数据集中浏览此度量时,计数完全错误。正确的数字(没有维度限制)大约是 10,000,000,浏览器显示 30。我尝试通过跟踪窗口查看是否可以读取多维数据集用于生成动态总和的代码,但它不是可见的。
任何人都知道为什么会这样?