0

我是 MDX 新手,在从总和中过滤掉值时遇到问题。

我们想要执行归一化计算,特别是数量 (q) 除以基 (b) 以获得强度 (I)。公式相当简单 I=q/b。

我们的立方体结构:

我们有事实表 FactQuantity 和 FactBasis,每一个都与我们的 DimOrg 和 DimTime 维度表相关联。这两个维度都有层次结构:在 DimTime 中将月份汇总为年,在 DimOrg 中将位置汇总为业务单位和组。

事实表彼此不同步:仅仅因为特定 org_id 和 time 存在数量,不能保证相同 org_id 和 time 存在基础。

我对解决方案的尝试:

计算成员的基本形式很简单:[Measures].[Quantity]/[Measures].[Basis]

当我们在两个维度的最低级别查看时,这工作正常,但是当您汇总维度并开始聚合时会出现问题。

问题是同时包含了没有对应的 Basis 值的 Quantity 值和位置,从而使分子太大,因此不正确。

快速示例:

A组中的org_id 001的基数为100,数量为1000,因此其计算强度为1000/100=10。目前很好。A组中的org_id 002也没有根据,但确实有2000的数量,因此其计算的强度错误。美好的。

向上滚动到组 A 将数量 (3000) 和基数 (100) 相加,计算出的强度为 30,这对于组来说是不正确的。应该排除 2000,因为对于相同的 org_id 和时间,它没有相应的基础值。

非常感谢您提供的任何帮助。

谢谢,

4

1 回答 1

2

Deepak Puri在 MSDN 论坛上回答了这个问题:

假设 [DimOrg].[Location] 和 [DimTime].[Month] 是 2 个维度的叶级属性,您可以将 [Measures].[Quantity] 分子仅对具有基础的叶求和,例如:

Sum(NonEmpty(existing [DimOrg].[Location].[Location].Members * [DimTime].[Month].[Month].Members, [Measures].[Basis]), [Measures].[Quantity]) / [Measures].[Basis]

于 2010-04-22T15:12:28.880 回答