我是MDX的新手,在过滤掉总和中的值方面存在问题。
我们想要进行归一化计算,特别是数量(q)除以基础(b)以得到强度(I)。公式很简单I = q / b。
我们的多维数据集结构:
我们有事实表FactQuantity和FactBasis,每个都与DimOrg和DimTime维度表相关联。这两个维度都具有层次结构:DimTime中的月份汇总为多年,而DimOrg中的位置汇总为业务单位和组。
事实表彼此不同步:仅仅因为特定org_id和时间存在数量,因此不保证对于同一org_id和时间存在基础。
我在解决方案时的尝试:
计算成员的基本形式很简单: [处理方法]。[数量] / [措施]。[基]
当我们在两个维度的最低级别查看时,这样可以正常工作,但是当您汇总维度并开始聚合时会出现问题。
问题是包含了在同一时间和位置没有相应Basis值的Quantity值,从而使分子太大而因此不正确。
快速示例:
组A中的org_id 001的基数为100,数量为1000,因此其计算强度为1000/100 = 10。目前很好。 org_id 002也在A组中没有基础,但它的数量确实为2000,所以计算出的强度误差也没有。细
滚动到A组会将数量(3000)和基数(100)相加,计算出的强度为30,这对于该组是不正确的。应该排除2000,因为它对于相同的org_id和时间没有相应的基准值。
非常感谢您提供的任何帮助。
谢谢,
答案 0 :(得分:2)
Deepak Puri answered this:
假设[DimOrg]。[Location]和[DimTime]。[Month]是2个维度的叶级属性,您可以将[Measures]。[Quantity]分子与仅有叶子的叶子相加,像:
Sum(NonEmpty(existing [DimOrg].[Location].[Location].Members * [DimTime].[Month].[Month].Members, [Measures].[Basis]), [Measures].[Quantity]) / [Measures].[Basis]