在我的 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
- Active Commitments 运行良好。它是针对某个时间点计算的,不应跨时间段汇总。
- 收购工作正常。
[Measures].[ promise 增长] = ([Measures].[Active Commitments],[Date Dimension].[Fiscal Year Hierarchy].currentMember) - ([Measures].[Active Commitments], [日期维度].[会计年度层次结构].prevMember)
[措施].[净损失 promise ] = ([措施].[收购] - [措施].[ promise 增长])
屏幕截图中发生的事情是,净损失 promise 总额是根据收购总额 (23,621) 减去 promise 增长总额(为空)计算得出的。
净损失 promise 的聚合很有意义,适用于非时间维度。但我希望它在选择多个时间段而不是错误值时显示 null。请注意,这与简单地禁用时间维度上的所有聚合不同。 Net Lost Commitment 的聚合在时间层次结构上运行良好——屏幕截图显示了 2009 年和 2010 年的正确值,如果您扩展到季度或月,您仍然会得到正确的值。只有选择了多个时间段才会聚合失败。
所以我的问题是如何更改 Net Lost Commitments 的定义,使其在选择多个时间段时不聚合,而是继续跨所有其他维度聚合?比如MDX有没有写法:
CREATE MEMBER CURRENTCUBE.[Measures].[Net Lost Commitments]
AS (iif([Date Dimension].[Fiscal Year Hierarchy].**MultipleMembersSelected**
, null
, [Measures].[Acquisitions] - [Measures].[Growth in Commitments]))
ADV感谢ANCE,
马特。
最佳答案
另一个来源的建议为我解决了这个问题。我可以使用——
iif(iserror([Date Dimension].[Fiscal Year Hierarchy].CurrentMember),
, null
, [Measures].[Acquisitions] - [Measures].[Growth in Commitments]))
当Currentmember选择多个成员时,将返回错误。
关于ssas - 选择多个时间段时 MDX 计算度量的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14827654/