概要
Cognosに限らず、BIでレポートを生成する場合は、データソースとしてのテーブル構造はいわゆるスター・スキーマ型になると思います。
例として以下のようなテーブル構造の場合、プロンプトとして選択するデータ項目、フィルターの対象となるデータ項目はどのように考えれば良いでしょうか。
この選択を誤り、パフォーマンスに大きな影響が出ている環境を見かける事が多いので、投稿しておきます。
プロンプトとして選択するデータ項目
例えば日付のプロンプトを作成する場合、図のようにDimension表の「日」を選択します。
時々、FACT表の「出荷日」をプロンプトに指定している環境を見かけますが、この場合、プロンプトに日付を並べたいだけなのに、巨大なFACT表を全行取得して、日付を取得する処理になってしまいます。
また、「製品ライン」をプロンプトで使用したい場合に、そのままプロンプトウィザードで「製品ライン」をDimension表から取得しているケースも多く見られます。
この様な場合、下記のように表示する値は「製品ライン」で良いですが、使用する値に「製品ラインコード」を使用するようにしましょう。
「製品ライン」の名称より「製品ラインコード」の方が、文字数として短い事が一般的で、レポートのクエリーにフィルターをかける際に、より効率的な絞込みができます。
また、プロンプトを取得するクエリーのプロパティで「Limited Local」に設定して、キャッシュを使用する事でパフォーマンスが改善される事もあります。
パフォーマンスが出ない場合は、試してみてください。
フィルターの対象となるデータ項目
フィルターの対象となるデータアイテムの選定は、
・PK、INDEXが張られているデータアイテムを使用する
・可能であれば、ファクトテーブルのキー項目のデータアイテムに対してフィルターを作成し、Dimension表との間に不要なテーブル結合を発生させない
という事を考慮して行いましょう。
以下の図の場合、前者が「製品ラインコード」、後者が「出荷日」という事になりますね。