##概要
Cognos BI & Analyticsで、ドリルスルーを使用する場合の、覚えておいた方が良いパフォーマンス上の注意点です。
ドリルスルーとは、あるレポート上の例えばグラフのバーをクリックすると、クリックしたアイテムの情報を持って他のレポートに遷移する機能です。
Cognosではドリルスルーを設定すると、ドリルスルーの元のレポートのレスポンスが遅くなる事がありますが、その動作を解説します。
##説明
例えば、以下のようなレポートがあったとします。
X軸に「年月」、Y軸に「販売数量」、プロンプトに「製品」を置いてます。
普通に実行すると、数秒でレポートが表示されますが、このレポートのグラフ部分にドリルスルーを設定すると、レポートのレスポンスに影響します。
Cognosでのパフォーマンスボトルネックは、データソースであるDB、Cognosサーバー、クライアントPC、と、3つのポイントが考えられますが、この場合のレスポンス影響は、クライアントPC上で現れます。
プロンプトで大量の選択を行い、レポート実行時にクライアントPC上でタスクマネージャーなどでリソースの確認を行うと、大量のCPUとメモリーが消費されている事がわかります。
これはFiddler等で、N/Wのパケットをモニターすると原因が分かるのですが、以下の様な選択されたプロンプトの情報が、ドリルスルーポイント数分繰り返されて送信されてきます。
useValue="151,99,129,128" displayValue="アストロパイロット,アロエクリーム,インフィニティ,インフェルノ"
ドリルスルーポイント数とは、何を言っているかというと、例えば上のグラフで赤で囲っている「201001」のバーは、1個のドリルスルーポイントです。
当然、横の「201002」も別のドリルスルーポイントとしてカウントされます。
201001-201012で12個
201101-201112で12個
201201-201212で12個
201301-201307で7個
合計で43個のドリルスルーポイントがこのグラフには存在します。
つまり、このグラフでは先に出た、以下の行が43回繰り返しCognosサーバーからクライアントPCに送信される動作になります。
useValue="151,99,129,128" displayValue="アストロパイロット,アロエクリーム,インフィニティ,インフェルノ"
ここまで分かれば、レポート開発経験がある方であれば、何を注意してレポートを作成すれば良いかお分かりになるかと思います。
例えば、X軸を「年月」ではなく「年月日」になっているようなレポートでは、ドリルスルーを設定するとさらに影響は顕著になり、プロンプトでより長い製品名称を扱ったり、大量のプロンプト選択をした場合は、これも影響が顕著に出ます。
この動作を理解しておいて頂ければ、レポートを開発してみてテスト局面でレスポンスを計測する前に、レポート設計の段階で注意すべきレポートかどうか判断ができます。
また、
・グラフでドリルスルーをやるのではなく、X軸の「年月」のプロンプトも別途作っておき、ドリルスルーボタンを1個配置してドリルスルーポイント数を抑える
・初期表示はX軸の範囲を「年月」レベルに留めておき、「日」はドリルダウンした場合に対象の月の中の日にちだけを表示して、ドリルスルーポイント数を抑える
・プロンプトでは略称を使ったり、displayValueを使わずにuseValueだけにする
など、色々な回避策を早めに打つ事ができます。
Cognosレポート開発でドリルスルーを使用する際には、是非この動作を頭に入れてレポート設計をご検討下さい。