0

COGNOS Report Studioで、自分のクエリを他のクエリの前に最初に実行する方法はありますか?

ユース ケース: 7 ~ 8 個のストアド プロシージャ (sps) の結果を比較してデータの不一致を見つける COGNOS レポートがあります。このために、sps A の結果を sp B の結果と、B を C に、A を D に、というように結合する必要があります。COGNOS には結果のキャッシングがなく (ローカル キャッシングは役に立たない)、ストアド プロシージャの実行が遅いため、疑似キャッシング手法を実装しました。レポート生成の開始時に、時間のかかる 3 ~ 4 個の SP の結果をテーブルに保存します。また、比較のためにデータが必要な COGNOS クエリではSELECT *、テーブルに対して a を実行するだけです。問題は、このキャッシュ生成クエリが最初に実行されるようにする方法です。これにより、データの入力前に別のクエリが SELECT * を実行する状況に遭遇することはありません。

洗練されていない解決策:実際のプロンプトの後に自動送信されるダミーのプロンプトを用意します。そして、キャッシュ生成クエリをダミー/非表示プロンプトのソース クエリとして作成します。このように、ユーザーがプロンプトで値を選択すると、別のプロンプトが表示され、自動送信されるため、キャッシュ生成クエリが他のクエリの前に実行されます。

PS

  1. これに cognos が使用される理由は、問題の sp が実際には他の COGNOS レポートのソースであるため、sp を比較することで、実際には異なるレポートを比較していることになり、企業は不一致レポートを PDF のみで表示したいと考えています。

  2. 上記の疑似キャッシュ技術を使用して、レポートの実行時間を 50 分から 30 分に短縮しました。この解決策の問題点は、[レポートをメールで送信] オプションを使用してレポートを実行すると、タイムアウトになり、メールが受信されないことがあるということです。

他のクエリの前に COGNOS クエリを最初に実行する他の方法があれば教えてください。可能であれば、パフォーマンスを改善する方法をいくつか提案してください。


プラットフォームSQL サーバーと COGNOS レポート スタジオ

4

4 に答える 4

0

全体を別のストアド プロシージャにラップして、比較を行い、結果を Cognos に返すだけにすることはできますか?

于 2013-09-05T19:10:31.117 に答える
0

「ライブ」レポートの良いケースとは思えません。SQL スケジューラを使用して事前に SP を実行し、最後に完了した日付をデバッグ テーブルに書き込みます。Cognos に、作成したテーブルとデバッグ テーブルからの最終実行日を読み取らせます。

于 2013-09-05T15:04:00.900 に答える
0

上記のすべてのコメントに同意します。

Cognos Cognos ジョブを使用してストアド プロシージャを実行し、「不一致」レポート テーブルを事前入力してから、そのテーブルで Cognos レポートを実行し、一度に電子メールで送信できます。そして、あなたのデータ量が何であるかはわかりませんが、合理的なレポートには30分かかります(GBのデータをトロールしている場合を除きますが、とにかくETLでそれを行う必要があります).

原則として、ETL の実行中にすべてのデータ チェックを行い、ロード ジョブで Event Studio エージェントをトリガーして、データが間違っている、見つからない、ロードされていないというレポートをデータ品質の責任者に電子メールで送信します。

于 2013-10-04T00:23:04.127 に答える
0

「COGNOS には結果のキャッシュがなく、ストアド プロシージャの実行が遅いため」

それらを直接実行する場合よりも遅くはありません。他のすべてのコメントに同意します。それらを別のストアド プロシージャにまとめることもできますが、実際には一歩下がって、適切なパフォーマンス チューニング (つまり、インデックスとクエリ プラン) を行うことをお勧めします。

于 2013-10-03T00:09:41.620 に答える