可能であればスピードアップを試みたい Cognos レポートがあります。出力を HTML に送信する場合 (レポート全体が確実に作成されるように最後のページにジャンプすることを含む)、レポートは 4 分、出力を EXCEL に送信する場合は 7 分、PDF の場合は 8 分かかります。
レポートは、データベース VIEW に関連付けられた単一のクエリ サブジェクトを使用します。ビューから * を選択すると、ビューは 28 秒で 200 行を返します。これが私のレポートの唯一のクエリです。
この 1 つの Cognos クエリに両方ともバインドされている 2 つのクロス タブがあります。最初のクロス集計では、列「FUNDING REPORT NAME」にセクション区切りがありますが、2 番目のクロス集計にはありません。代わりに、すべての FUNDING REPORT NAMES を要約しています。
次に、レポート ページを「REPORT GROUP」と「LEGAL ENTITY」の 2 つの列にグループ化します。これにより、個別の値のペアごとに個別のタブが作成されます。各タブで、Cognos は REPORT GROUP/LEGAL ENTITY の現在の値のデータを自動フィルタリングして要約します。
Cognos がビューに対してクエリを 1 回だけ実行するのではなく、複数のクエリを実行しているため、レポートに予想以上に時間がかかっていると思います。パフォーマンス上の理由から Cognos に実行してもらいたいのは、ビュー内の 200 行すべてを返し、結果をローカルに保存してから、これらの行に対してクエリを実行して、REPORT GROUP と LEGAL ENTITY の DISTINCT 値を識別し、このグループ内で、現在のFUNDING REPORT NAME内のローカルデータを要約します。代わりに、小さな結果セットのローカル処理を行う代わりに、ビューに対して複数のクエリを発行してこの情報を取得します。
Cognos に個別の値を識別させてローカルで中断および集計させるために、次のプロパティ設定を試してみました。
Set "RollUPProcessing" property on Query = Local
Set "Use Local cache" property On Query = Yes
Set the "Query Process" property on the Data Source object in the Model to "Limited Local"
ただし、これらの変更による実行時間への影響はないようです。
このレポートをより速く実行するためにできることはありますか? HTML はかなり高速ですが、Excel が必要です。Excel に直接変換したときにレポートの作成をスピードアップするためにできることはありますか?
以下は、Cognos が実行中であると言う 4 つの Cognos 構文クエリです。私のレポートには、ビューで 200 レコードすべての行を返すクエリが 1 つだけあります。
select distinct
"MLR_ROLL_FWD"."REPORT_GROUP" "Report_group"
, "MLR_ROLL_FWD"."LEGAL_ENTTY_NAME" "Legal_Entity_Name"
from
MYSCHEMA."MLR_ROLL_FWD_V" "MLR_ROLL_FWD"
order by
"Report_group" asc
, "Legal_Entity_Name" asc
FOR FETCH ONLY
select distinct
"MLR_ROLL_FWD"."FUNDNG_RPT_NM" "Funding_Report_Name"
,"MLR_ROLL_FWD"."REPORT_GROUP" "Report_group"
,"MLR_ROLL_FWD"."LEGAL_ENTTY_NAME" "Legal_Entity_Name"
from
MYSCHEMA."MLR_ROLL_FWD_V" "MLR_ROLL_FWD"
order by
"Funding_Report_Name" asc
FOR FETCH ONLY
select
"MLR_ROLL_FWD"."REPORT_GROUP" "Report_groupkey"
,"MLR_ROLL_FWD"."LEGAL_ENTTY_NAME" "Legal_Entity_Namekey"
,case
when "MLR_ROLL_FWD"."SERVICE_YEAR" <> 9999 then
'Service Year ' || "MLR_ROLL_FWD"."SERVICE_YEAR"
else 'Total'
end "levelkey"
,"MLR_ROLL_FWD"."YEAR_QUARTER" "Year_Quarterkey"
,sum("MLR_ROLL_FWD"."BEG_BAL_AMT") "Beginning_Gross_Balance"
,sum("MLR_ROLL_FWD"."REBATE_CSH_AMT") "Cash_Collection"
,sum("MLR_ROLL_FWD"."REBATE_BILLD_AMT") "Current_Billing_AMT"
,sum("MLR_ROLL_FWD"."REBATE_UNDR_OVR_PAYMT_AMT") "Over_Under_Payment_AMT"
,sum("MLR_ROLL_FWD"."REBATE_RECVBL_MANL_ADJ_AMT") "RXP_Adjustment_AMT"
,sum ("MLR_ROLL_FWD"."REBATE_RECVBL_BUMP_UP_AMT") "RXP_Bump_Up_Adjustment_AMT"
,sum("MLR_ROLL_FWD"."PYE_RECVBL_BUMP_UP_REVSL_AMT") "RXP_Bump_Up_Reversal_AMT"
,sum("MLR_ROLL_FWD"."GL_REBATE_RECVBL_AMT") "Ending_Balance__Net_"
from
MYSCHEMA."MLR_ROLL_FWD_V" "MLR_ROLL_FWD"
group by
"MLR_ROLL_FWD"."REPORT_GROUP"
,"MLR_ROLL_FWD"."LEGAL_ENTTY_NAME",
case
when "MLR_ROLL_FWD"."SERVICE_YEAR" <> 9999
then 'Service Year ' || "MLR_ROLL_FWD"."SERVICE_YEAR"
else 'Total'
end
,"MLR_ROLL_FWD"."YEAR_QUARTER"
FOR FETCH ONLY
select
"MLR_ROLL_FWD"."REPORT_GROUP" " Report_groupkey"
,"MLR_ROLL_FWD"."LEGAL_ENTTY_NAME" "Legal_Entity_Namekey"
, case when "MLR_ROLL_FWD"."SERVICE_YEAR" <> 9999
then 'Service Year ' || "MLR_ROLL_FWD"."SERVICE_YEAR"
else
'Total'
end "levelkey"
, "MLR_ROLL_FWD"."YEAR_QUARTER" "Year_Quarterkey"
, sum("MLR_ROLL_FWD"."BEG_BAL_AMT") "Beginning_Gross_Balance"
, sum("MLR_ROLL_FWD"."REBATE_CSH_AMT") "Cash_Collection"
, sum("MLR_ROLL_FWD"."REBATE_BILLD_AMT") "Current_Billing_AMT"
, sum("MLR_ROLL_FWD"."REBATE_UNDR_OVR_PAYMT_AMT") "Over_Under_Payment_AMT"
, sum("MLR_ROLL_FWD"."REBATE_RECVBL_MANL_ADJ_AMT") "RXP_Adjustment_AMT"
, sum("MLR_ROLL_FWD"."REBATE_RECVBL_BUMP_UP_AMT") "RXP_Bump_Up_Adjustment_AMT"
, sum("MLR_ROLL_FWD"."PYE_RECVBL_BUMP_UP_REVSL_AMT") "RXP_Bump_Up_Reversal_AMT"
, sum("MLR_ROLL_FWD"."GL_REBATE_RECVBL_AMT") "Ending_Balance__Net_"
from
MYSCHEMA."MLR_ROLL_FWD_V" "MLR_ROLL_FWD"
group by
"MLR_ROLL_FWD"."REPORT_GROUP"
, "MLR_ROLL_FWD"."LEGAL_ENTTY_NAME"
, case when "MLR_ROLL_FWD"."SERVICE_YEAR" <> 9999
then 'Service Year ' || "MLR_ROLL_FWD"."SERVICE_YEAR"
else 'Total' end
,"MLR_ROLL_FWD"."YEAR_QUARTER"
FOR FETCH ONLY
大きな懸念事項の 1 つは、クエリ 3 と 4 が同一であることです。2 つのクロス集計を同じクエリにバインドしても、SQL が 2 回実行されることはないと思われるかもしれません。