#概要
Cognos Analyticsでマスター詳細の機能を使用しているレポートのチューニング例です。
マスター詳細を使用している例ですが、以下のようにリストの中にリストが入っていて、親のリストでは「年」をデータとして持っていて、子のリストでは「製品ライン」と「数量」が、親の「年」の値に該当する数値が表示されています。
この様なレポートの場合、
①2010年の「製品ライン」と「数量」を取得するクエリーが発行され
②2011年の「製品ライン」と「数量」を取得するクエリーが発行され
③2012年の「製品ライン」と「数量」を取得するクエリーが発行され
④2013年の「製品ライン」と「数量」を取得するクエリーが発行され
という感じに、子のクエリーが、親の値分繰り返し発行されます。
マスター詳細のチューニングは、子のクエリー発行の繰り返しを発生させない事が方針となります。
#マスター詳細のレポート実装
子のクエリーのプロパティの「マスター/詳細の関係」で、以下のように、親(Master)の「年」子(Detail)の「年」の間にリンクを作成して実装を行います。
#マスター詳細のチューニング①
この例では、MasterとDetailで取り扱うデータアイテムは「年」「製品ライン」「数量」なので、これらをまとめて一旦「Base」というクエリーで取得します。
そして、クエリー・エクスプローラーで、以下の様にMasterとDetailのクエリーにリダイレクトします。
Masterのクエリーの「年」はBaseクエリーの「年」から取得しています。
また、クエリーのプロパティで、「ローカルキャッシュを使用」を「はい」にします。
Detailのクエリーの「年」「製品ライン」「数量」は、Baseのクエリーから取得しています。
また、クエリーのプロパティで、「ローカルキャッシュを使用」を「はい」、「SQLパラメーターを使用」を「リテラル」にします。
この設定により、MasterもDetailのクエリーも一度Baseクエリーにて取得した結果をキャッシュに乗る事で、Detailのクエリーが複数回データベースに対して発行される事も無く、キャッシュから取得され、高速化されます。
#マスター詳細のチューニング②
Framework Managerのガバナーの機能でも、「マスター詳細の最適化」というプロパティーが存在し、これにより前述の様な親のクエリーと子のクエリーをキャッシュで扱う事による最適化が可能なようです。
この機能をしっかり有効活用するため、こちらの記事もご参照ください。
Cognos のレポートを改善するためのヒントをさりげなく教えてくれる機能
https://qiita.com/shinyama/items/dae8c2ddf114ddef2a08
以上、ご活用下さい。