LoginSignup
0
0

More than 5 years have passed since last update.

Cognos Framework Manager でデータソースが異なる表同士を結合する場合のチューニング

Posted at

Framework Managerのフィルター・タイプ設定

こんなTechnoteの存在を最近始めて気が付き、自分の興味と理解のために検証したので、自分で忘れないように投稿しておきます。
こちらのFilter Join Optimizationです。

IBM Analytics Proven Practices - What's New in Framework Manager 10.2.2
http://www-01.ibm.com/support/docview.wss?uid=swg21902184

異なるデータベース上の二つの表を結合する時に、この設定が役立ちます。
db.JPG

例えば、以下のモデルで、TESTデータベースのSLS_ORDER_METHOD_DIM表とGS_DBデータベースのSLS_SALES_FACT表をORDER_METHOD_KEYをキーにしてリレーションを貼り、OrderMethodSalesクエリーサブジェクトで、SLS_ORDER_METHOD_DIM表のORDER_METHOD_JAとSLS_SALES_FACT表のQUANTITYを組み合わせて参照したいケースです。
model.JPG

OrderMethodsSalesクエリーサブジェクトを、そのままレポートのリストに置いて、ORDER_METHOD_JA='電子メール'でフィルターを掛けてレポートを実行します。
003.JPG

この時、SLS_SALES_FACT表に発行されるクエリーは以下になりました。
つまり、ORDER_METHOD_KEYが'電子メール'のデータのみをSLS_SALES_FACT表から取得して欲しいのに、全件取得しています。
全件取得後に、CognosのJVM上でSLS_ORDER_METHOD_DIMの結果(電子メールのみ)とマージして、最終結果セットを生成する動きです。
ファクト表から全件取得してしまうこの動きは、パフォーマンス上望ましく無いのは明白ですね。

SELECT 
"SLS_SALES_FACT"."ORDER_METHOD_KEY", "SLS_SALES_FACT"."QUANTITY" 
FROM 
"GOSALESDW"."SLS_SALES_FACT" "SLS_SALES_FACT" 
FOR FETCH ONLY

次に、Framework Manager上でリレーションのプロパティで、「(DQM)フィルター・タイプ」=「時刻」にしてみます。
※マニュアル上では、「中」の選択肢と記載されているのですが、実際は「時刻」という表示になります。SQL的には、IN句の指定をする、という意味がこの設定です。
https://www.ibm.com/support/knowledgecenter/ja/SSEP7J_11.0.0/com.ibm.swg.ba.cognos.ug_fm.doc/t_dqm_join_opt.html
001.JPG

この時、SLS_SALES_FACT表に発行されるクエリーは以下になりました。
IN句で ORDER_METHOD_KEY IN (604)していますので、必要なデータのみをファクト表から取得してくれているのがわかります。

SELECT 
"SLS_SALES_FACT"."ORDER_METHOD_KEY", "SLS_SALES_FACT"."QUANTITY" 
FROM 
"GOSALESDW"."SLS_SALES_FACT" "SLS_SALES_FACT" 
WHERE 
"SLS_SALES_FACT"."ORDER_METHOD_KEY" 
IN ( 604 ) FOR FETCH ONLY

フィルター・タイプを「指定の値の間」にした場合、以下のクエリーが発行されます。
Betweenが使用されていますね。

SELECT 
"SLS_SALES_FACT"."ORDER_METHOD_KEY", "SLS_SALES_FACT"."QUANTITY" 
FROM 
"GOSALESDW"."SLS_SALES_FACT" "SLS_SALES_FACT" 
WHERE 
"SLS_SALES_FACT"."ORDER_METHOD_KEY" 
BETWEEN 604 AND 604 FOR FETCH ONLY

異なるデータベース上の表を結合する時に、ファクト表から必要なデータのみを取得するようにチューニングが必要と覚えておきましょう。

0
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
0
0