ssas - 选择多个时间段时 MDX 计算度量的聚合

标签 ssas mdx

在我的 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 
  1. Active Commitments 运行良好。它是针对某个时间点计算的,不应跨时间段汇总。
  2. 收购工作正常。
  3. [Measures].[ promise 增长] = ([Measures].[Active Commitments],[Date Dimension].[Fiscal Year Hierarchy].currentMember) - ([Measures].[Active Commitments], [日期维度].[会计年度层次结构].prevMember)
  4. [措施].[净损失 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/

相关文章:

ssas - MDX 查询不工作

sql-server - 如何级联筛选 SSAS 多维数据集中更多维度的属性,在 Excel 2007 中查看

Excel Power Query(又名获取和转换)更新后慢 10 倍

mdx - `Intersect({}, ....`的目的是什么

mdx - Tableau、SSAS 和 MDX

mdx - 动态获取最近三个月

ssas - 我该如何解决这个 MDX 问题?

SSAS - 关系/粒度

mdx - 在 MDX 中列出成员及其所有后代的最佳方式是什么?

ssas - 在 SSAS 中计算百分位数