0

如果从 SSAS 返回数据集,其中某些记录可能是无穷大或 -infinity(在 SSAS 中计算,不在报告中)。

我想计算该列的平均值,但忽略那些正无穷或负无穷大的记录。

我的想法是创建一个逻辑上可以执行此操作的计算字段:

= IIF(IsInfinity(Fields!ASP.Value) or IsNegativeInfinity(Fields!ASP.Value), 0 Fields!ASP.Value)

我不知道该怎么做IsInfinityor IsNegativeInfinity

或者相反,有没有办法计算忽略这些记录的列的平均值?

4

2 回答 2

3

刚刚偶然发现了这个问题,并找到了一个简单的解决方案来确定数字字段是否为无穷大。

=iif((Fields!Amount.Value+1).Equals(Fields!Amount.Value), false,true)
于 2011-12-22T10:16:10.907 回答
1

我假设您使用的是商业智能工作室而不是报表生成器工具。

也许您正在尝试一个公式,因为您无法更改 SSAS MDX 查询,但如果可以,那么无穷大可能是由除以零引起的。NaN 可能是由于尝试使用 NULL 值进行数学运算而引起的。

理想情况下,更改立方体本身,以便度量不会被零除(例如,IIF [度量] = 0,不做除法只返回“”,否则做它)。第二个选项是在 MDX 查询中创建一个计算度量,它执行类似的操作。

至于公式,没有 IsInfinity 函数,因此您必须查看字段的值,看看它是 1.#IND 或 1.#INF 还是 NaN。

于 2012-01-13T01:28:11.870 回答