2011-07-28 6 views
0

SSASから返されたデータセットがある場合、一部のレコードは無限または無限大になります(レポートに含まれていないSSASで計算されます)。SSRSのdoubleが無限大であるのか、-infinityかNanであるのかをどうやって判断するのですか?

この列の平均を計算しますが、正または負の無限大のレコードは無視します。

私の考えを論理的にこれを行うだろう計算フィールドを作成することです:

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

私が把握することはできませんどのようなIsInfinityまたはIsNegativeInfinityを行う方法です。

逆に、これらのレコードを無視している列の平均を計算する方法はありますか?

答えて

3

この問題を偶然見つけただけで、数値フィールドが無限大かどうかを判断する簡単な解決策が見つかりました。

=iif((Fields!Amount.Value+1).Equals(Fields!Amount.Value), false,true) 
0

私はあなたがレポートビルダーツールではなくビジネスインテリジェンススタジオを使用していると仮定しています。

SSAS MDXクエリを変更することができない可能性がありますが、可能であれば、ゼロで除算することによって無限大が発生する可能性があります。 NaNは、NULL値を持つ数式を実行しようとしたことが原因です。

数値が0で除算されないようにキューブ自体を理想的に変更します(例:IIF [小節] = 0、除算を行わない、そうでなければ行う)。 2番目のオプションは、何か類似しているMDXクエリで計算されたメジャーを作成することです。

公式については、IsInfinity関数がないため、フィールドの値を見て、その1の#INDか1#INFかNaNかを確認する必要があります。

関連する問題