如果从SSAS返回了一些数据集,其中某些记录可能是无穷大或无穷大(在SSAS中计算不在报告中)。
我想计算此列的平均值,但忽略那些正或负无穷大的记录。
我的想法是创建一个逻辑上可以执行此操作的计算字段:
= IIF(IsInfinity(Fields!ASP.Value) or IsNegativeInfinity(Fields!ASP.Value), 0 Fields!ASP.Value)
我无法弄清楚如何IsInfinity
或IsNegativeInfinity
。
或者相反,有没有办法计算忽略这些记录的列的平均值?
答案 0 :(得分:3)
偶然发现了这个问题并找到了一个简单的解决方案,用于确定数字字段是否为无穷大。
=iif((Fields!Amount.Value+1).Equals(Fields!Amount.Value), false,true)
答案 1 :(得分:0)
我假设您使用的是商业智能工作室而不是报表生成工具。
也许你正在尝试一个公式,因为你不能改变SSAS MDX查询,但如果你可以,那么无穷大可能是由零除以引起的。 NaN可能是由于尝试使用NULL值进行数学运算而引起的。
理想情况下,更改多维数据集本身,以便将度量安全除以零(例如,IIF [measure] = 0,不执行除法只返回“”,否则执行此操作)。第二个选项是在MDX查询中创建一个类似的计算度量。
对于公式,没有IsInfinity函数,因此您必须查看字段的值并查看其是否为1.#IND或1.#INF或NaN。