misc.log

日常茶飯事とお仕事と

BIRTのCrossTabでNaNと表示されるのを抑制したい

空、というかゼロデータを含むキューブ(Cube)を元に、割り算の式を含むクロスタブを作ったところ、データが無いところに「NaN」と表示される現象が……。テーブルのプロパティにある「Empty Rows/Columns」の設定に代替文字を入れても反応しないし、どうすればいいか判らないので検索してみたら、こんなところが引っかかった。

BIRT Exchange/Suppressing NaN on Crosstabs
http://www.birt-exchange.org/org/forum/index.php/topic/20559-suppressing-nan-on-crosstabs/page__p__68585&


BIRT(バート)エクスチェンジですか……やっぱそういう掲示板というか質問出来る場所があるのね。というわけで、ココに記載されていた下記の式を、問題のセルの式設定に記入してみた。

分子データ == null ? 0.00 : 分子/分母


この「?」と「:」で式を区切ったもの、知らなかったのですがJavascript三項演算子なんですね。最初の式を評価して、Trueであれば?の後の式を利用、Falseであればコロンの後の式を利用、ということらしいです。ただ、この方法だとデータが無いところはゼロになってしまいます。恐らくセルの書式が値指定になっているので、これを何か文字に置き換えるなら、セルの書式から変えて、上記サイトに書いてあったもう一つの方法、文字列化して置換するという路線を採る必要が……とおもったのですが……。できました。

分子データ == null ? "--" : 分子/分母


この記述で、データが無いところは2連のハイフンに置き換わります。どうなってるの?結構曖昧なの?>型指定……いや違った。型指定はStringになってました。適当だったのは私の方でした。


で、マップを使った方法についてはMap自体の機能をまだ把握していないので一旦スキップ。