Cognos BIでのパフォーマンスチューニングのネタで、youtubeで公開されている動画の抜粋です。
IOD2012で、Armin Kamalという、Cognosの有名なデベロッパーが発表したものです。
なかなかマニアックな情報もあり、上級者向けの内容となっています。
とても良い情報満載の動画なので、私の理解の範囲でサマリーを記載しますので、興味を持たれた方は是非全編を見てみて下さい。
Part1 プロジェクト全体的な話
基本的な情報が主。
データソースとして、OLAPとかStar Schemaを使うのは大事というメッセージ。
Part2 Framework Manager
・Cognos SQLとNative SQLを見る
こんな風に、Native SQLが2回 selectしていると、Local Processingが発生していてパフォーマンス上まずい、というしるし。
RDBMSでサポートされていない関数を使っていると、Local Processingが発生する。
簡単な見つけ方。
FMの項目のプロパティで、Query Processing = Database Onlyにして
実行してみると、エラーになる。
・ Query Informationの応答をみる
Retrieve from Databaseになっていると良くないらしい。
Query Subjectを編集するとか、フィルターかけるとかしていると、こうなる。
Filter Item ReferenceはQuery Studioとか自由分析で使われるらしい
索引の張ってる列を指定しておくと良い。
⇒CWAとか、自由分析に使えそう。
Part3 Report Studio
・フィルターは索引が付いている列を指定しましょう。名称ではなくキーとかコードとか。
・Report Studioのサプレッション機能とFilter関数
MDXでNullを削除するためのフィルターが無い。Local Processing。
・SlicerとMemberの違い
実行すると、Slicerの結果Nullとなった列も表示される。
Slicerではなく、Memberを置くプロンプトを作成。
⇒サプレッションはいらないので速い
Part4 Report Studio続き
親となるクエリーを一個作成し、子クエリーはキャッシュを使って高速化。
修正版。Sales TargetとRevenueで、階層を同じ2段階で配置するのがポイント。
最終的にクロス集計スペーサーは、クエリー計算をNULLにして、プロパティーでクラスを削除したものを使用すると同じようなものに見える。でもクエリーは一個。⇒Youtubeで確認しましょう。
・まとめ的な話
矢印で示しているところで、SQLに{}や{{}}があると、キャッシュやCognos SQL Optimizerをバイパスしてしまうので良くない、という話なので、SQLにこれがあると注意。
Part5 Trouble Shooting
実際にチューニングやってる例
デターミナントをきちんと作成するのも、パフォーマンス上重要。
youtubeの動画にはこれ以外の情報もありますので、興味を持たれたら是非見てみて下さい!