在我的 SSAS 多维数据集中,我在 MDX 中定义了几个度量,除了跨时间段的一种聚合类型之外,它们工作正常。有些人不聚合(也不打算),但一个人确实聚合但给出了错误的答案。我可以看到原因,但不知道该怎么做才能防止它。
下面的 Excel 屏幕截图中突出显示的总数(该死,不允许包含图像,恢复到老式表格)是最简单的错误情况。在该示例中,23,621不是5,713 和 6,837 的总和。
Active Commitments Acquisitions Net Lost Commitments Growth in Commitments
2009 88,526 13,185 5,713 7,472
2010 92,125 10,436 6,837 3,599
Total 23,621 23,621
- 主动承诺工作正常。它是针对某个时间点计算的,不应跨时间段汇总。
- 收购工作正常。
[Measures].[Growth in Commitments] = ([Measures].[Active Commitments],[Date Dimension].[Fiscal Year Hierarchy].currentMember) - ([Measures].[Active Commitments],[Date Dimension].[Fiscal Year Hierarchy].prevMember)
[Measures].[Net Lost Commitments] = ([Measures].[Acquisitions] - [Measures].[Growth in Commitments])
屏幕截图中发生的情况是,净损失承诺总额是根据收购总额 (23,621) 减去承诺增长总额(为空)计算得出的。
净损失承诺的聚合是有意义的,适用于非时间维度。但是我希望它在选择多个时间段而不是错误值时显示为空。请注意,这与简单地禁用时间维度上的所有聚合不同。Net Lost Commitment 的聚合在时间层次结构上工作得很好——屏幕截图显示了 2009 年和 2010 年的正确值,如果扩展到季度或月,您仍然会得到正确的值。只有选择多个时间段时,聚合才会失败。
所以我的问题是如何更改净损失承诺的定义,以便在选择多个时间段时不会聚合,而是继续在所有其他维度上聚合?例如,有没有一种在 MDX 中编写的方法:
CREATE MEMBER CURRENTCUBE.[Measures].[Net Lost Commitments]
AS (iif([Date Dimension].[Fiscal Year Hierarchy].**MultipleMembersSelected**
, null
, [Measures].[Acquisitions] - [Measures].[Growth in Commitments]))
高级感谢,
马特。