1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cognos Analytics でのマスター詳細を使用したレポートのチューニング

Last updated at Posted at 2018-10-10

#概要
Cognos Analyticsでマスター詳細の機能を使用しているレポートのチューニング例です。

マスター詳細を使用している例ですが、以下のようにリストの中にリストが入っていて、親のリストでは「年」をデータとして持っていて、子のリストでは「製品ライン」と「数量」が、親の「年」の値に該当する数値が表示されています。
この様なレポートの場合、
①2010年の「製品ライン」と「数量」を取得するクエリーが発行され
②2011年の「製品ライン」と「数量」を取得するクエリーが発行され
③2012年の「製品ライン」と「数量」を取得するクエリーが発行され
④2013年の「製品ライン」と「数量」を取得するクエリーが発行され
という感じに、子のクエリーが、親の値分繰り返し発行されます。
002.JPG

マスター詳細のチューニングは、子のクエリー発行の繰り返しを発生させない事が方針となります。

#マスター詳細のレポート実装
子のクエリーのプロパティの「マスター/詳細の関係」で、以下のように、親(Master)の「年」子(Detail)の「年」の間にリンクを作成して実装を行います。
003.JPG

親のMasterクエリーの保持しているデータアイテムです。
004.JPG

子のDetailクエリーの保持しているデータアイテムです。
005.JPG

#マスター詳細のチューニング①
この例では、MasterとDetailで取り扱うデータアイテムは「年」「製品ライン」「数量」なので、これらをまとめて一旦「Base」というクエリーで取得します。
007.JPG

そして、クエリー・エクスプローラーで、以下の様にMasterとDetailのクエリーにリダイレクトします。
006.JPG

Masterのクエリーの「年」はBaseクエリーの「年」から取得しています。
また、クエリーのプロパティで、「ローカルキャッシュを使用」を「はい」にします。
008.JPG

Detailのクエリーの「年」「製品ライン」「数量」は、Baseのクエリーから取得しています。
また、クエリーのプロパティで、「ローカルキャッシュを使用」を「はい」、「SQLパラメーターを使用」を「リテラル」にします。
009.JPG

この設定により、MasterもDetailのクエリーも一度Baseクエリーにて取得した結果をキャッシュに乗る事で、Detailのクエリーが複数回データベースに対して発行される事も無く、キャッシュから取得され、高速化されます。

#マスター詳細のチューニング②
Framework Managerのガバナーの機能でも、「マスター詳細の最適化」というプロパティーが存在し、これにより前述の様な親のクエリーと子のクエリーをキャッシュで扱う事による最適化が可能なようです。
001.JPG

この機能をしっかり有効活用するため、こちらの記事もご参照ください。
Cognos のレポートを改善するためのヒントをさりげなく教えてくれる機能
https://qiita.com/shinyama/items/dae8c2ddf114ddef2a08

以上、ご活用下さい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?