sql-server - 如何在 SSAS 中正确汇总此计算出的度量值?

标签 sql-server ssas

我在 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/

相关文章:

mysql - 当日期为空时,SQL 查询中的 Where 子句跳过日期过滤器

ruby-on-rails - Ruby on Rails 与 sql server

sql-server - 使用 scope_identity() 触发在 MSSQL 服务器中自动更新 lastModified 列

sql-server - 使用 XPath 从 XML 中排除孙子

ssas - 前 N 个客户名称作为 Power BI 中的切片器

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

ssas - MDX 中的子选择与切片器

sql-server - 在sql server 2008中将行检索为列

ssrs-2008 - 预定轮询间隔选项

sql-server - 如何从现有服务器更新 SSAS Visual Studio 项目?