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、除算を行わないで "" を返すだけ、それ以外の場合は行います)。2 番目のオプションは、同様のことを行う MDX クエリで計算メジャーを作成することです。

数式に関しては、IsInfinity 関数がないため、フィールドの値を調べて、1.#IND または 1.#INF または NaN であるかどうかを確認する必要があります。

于 2012-01-13T01:28:11.870 に答える