2010年6月11日金曜日

JasperReportsでクロス集計を行う

データを分析する上で集計表にするというのは可読性も上がり有効的です。

今まではデータをExcel形式に出力して集計したりピボットテーブルでまとめていたのですが、JapserReportsでクロス集計(Crosstab)という機能があるようなので試してみました。
要点は以下の2点

・Summary領域に作成する
CrosstabをPageHeaderやDetailに配置して実行してみると以下のエラーが発生します。

  Error incrementing crosstab dataset

このフレーズで調べてみた所、以下のサイトで簡潔に答えが出ていました。
JasperForge Forum

・複数ページになるとレイアウトが崩れるので
  1ページにまとまるようにする
これはこういった仕様なのかもしれません。


以下手順です。

1、レポートを加工
今回は今まで使っていた一覧形式のレポートを流用しました。 明細を一覧に表示した上で最後に表を表示したいのであればそのままですが、今回は表だけにしたいのでSummary領域だけを残し後は最小化 (高さを0に)します。

2、Crosstabを追加
パレットからCrosstabをドラッグ&ドロップimage

「次へ」をクリック
image

行要素を選択、ここでは二つまで選択できますが、後でから追加、編集が可能です。複数選択した場合は1,2の順番でグルーピングされますので部門別社員別の様な見方をしたい場合はそのように設定します。
image

列要素の選択、行要素同様 
image

集計要素を選択します。 一般的な集計以外に偏差も取れるようですがシンプルにSumを選択
image

表のスタイルを選択します。特にこだわりが無ければそのまま「完了」をクリックします。ちなみにここで「背景色無し」という設定は出来ないので後でから背景色を抜く作業をします。
image

これでCrosstabが配置されます。
image

Crosstab内の編集を行う場合は右のCrosstabを、レポート自体を編集する場合は左のMain reportをクリックして画面を切り替えます。
image


おまけ
・0を非表示に
集計結果が0の場合は表示しない方が見やすいので
各要素の Print When Expressions に

$V{XxxMeasure}.equals(Integer.valueOf(0)) ? Boolean.FALSE : Boolean.TRUE

と入れて対象項目が0の場合はBoolean.FALSEを返し非表示にします。

・背景色の変更
デフォルトのCrosstabは水色が基本の配色になっていますが、一般的にカラー印刷はコストが掛かるので背景色を取り除きます。

取り除く際はレポートをXML表示にして以下「」内のキーワードを正規表現付きで空文字に置換します。
(分かりづらいですが最後に半角スペースがあります)

backcolor=.*"

2010年6月4日金曜日

中古PCを手配

知り合いが中国で仕事を始めるという事で中古のノートPC手配を頼まれた。
用途としてはインターネットとメール、Officeが使えればいいので、古いPCでもいいのだが、Windows2000は今年の夏でサポートが切れるので対象外、また古いPCにPuppyLinuxやUbuntuを入れてもいいのではと思ったが、何かあった時にサポートが難しくなるのでそれも対象外とした。

また、ちょっと年配の方なのであまり小さいのもちょっと... という要望だったのでそれにあった物を探した。
要望をまとめると以下の通り

提示された要望
・A4サイズのノートPC
・メールとインターネット、Officeが使えればいい
・予算は2万位

これにこちらでの判断を追加すると、
・A4サイズのノートPC
・WindowsXP以降
・CPUはそこそこの物でもOK
・メモリはXPのSP3を考慮すると 512MB以上は欲しい
・無線LANはあっても無くてもOK
・バッテリーは出来るだけあった方がいい
・予算は2万位

個人的にIBM(Lenovo)のThinkPadが好きなのでオークション等を調べてみたらThinkPad R40eが結構出回っているみたいなのでそれがいいと思ったのだが、あの赤丸のポインティングデバイスがいまいち受け入れられないようなので、同じように数が多いDELLを中心に探したが、条件に合うものがなかなか無かった。

色々見てみた所、オークションで2004年製のNECのLet's Noteが手ごろな値段であったので落札、メモリが256MBしかなかったので追加で512MB購入し、全部で23,000円位になった。

商品が到着後、パーティションを切ったりAvast入れたりバックアップイメージを取ったりと諸作業をして引き渡し。
バックアップイメージはWindowsUpdateとその他設定をした状態で取り、外部メディアに保存しているので、もし何かあっても10分位でその時点に復元できるようにした。

バッテリーも良好で2.5時間位は持つようだし、出先で使う分には十分。
その人が持っている、2年くらい前のDELLノートよりも早くて使いやすいと言われた。
最近は新品でも10万円を切る感じで売っているが、用途によっては中古の方がコストパフォーマンスが良いのかもしれない。と思った。