我在 Analysis Services 中有一个计算度量,它根据过去三个时期返回某个位置的平均每日收入。经期是位置定义的时间长度,因此一个位置可能每月关闭其经期,而另一个位置可能每季度关闭其经期。
为了返回平均每日收入,我有一个factPeriods 表,该表返回一段时间内的收入以及对该段做出贡献的天数。以下 MDX 返回位置级别的正确值:([Measures].[AR 费用天数])/([Measures].[AR Days In AR Days])。
问题是,当我汇总到更高的级别时,假设我想按州返回平均每日收入,计算是不正确的,因为它首先汇总了各期间的天数,然后进行除法。我希望首先在最低级别进行平均,然后对每日平均收入的结果进行求和。以下是发生的情况与我希望发生的情况的示例。
假设我只有两个地点,A 和 B。A 每月关门一次,B 每季度关门一次。最后关闭的结果是:
位置/收入/贡献收入的天数
地点 A/3000 美元/30 天 地点 B/$1800/90 天
位置 A 每天产生 100 美元的收入,位置 B 每天仅产生 20 美元的收入。我的总金额应该是 120 美元/天。相反,它将返回 40 美元/天。以下是计算级别发生的情况。
我希望公式采用伪代码 SUM(([Measures].[Days In AR Charges])/([Measures].[Days In AR Days]))
但它实际上给了我 (SUM([Measures].[AR 收费天数]))/(SUM([Measures].[AR Days]))
任何人都可以帮助我确定适当的公式来使这项工作按预期进行吗?最终应该是 100 美元/天 + 20 美元/天,而不是 4800 美元/120 天。我怀疑我可能需要使用后代,但我不清楚我将如何使用它们,或者这是否是正确的方向。
最佳答案
强制计算在叶级发生然后汇总的最简单方法是将其移到 CALCULATE 之前; MDX 脚本中的语句。
通常您应该保留 CALCULATE;应该是脚本中的第一个语句,但我认为您描述的情况是一种异常(exception)情况,在这种情况下,在 CALCULATE 之前有一个计算成员是合理的;
关于sql-server - 如何在 SSAS 中正确汇总此计算出的度量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508414/