どうすればレポート表示は速くなる?
みなさん、こんにちは。
ハロウィンも終わって、後はクリスマスを残すのみとなりましたが、みなさんは、クリスマスプレゼントを
あげる側ですか?もらう側ですか?私は当然 (依然?) もらう側です。
さて、今回はパフォーマンス関連として、レポートに関する Tips を取り上げたいと思います。
それでは、まず本題に入る前に、パフォーマンスとは何かを考えてみたいと思います。
通常パフォーマンスが良い、悪いという場合は、クライアントアプリケーションから操作をして、その操作が
完了するまでの時間、ラウンドトリップ時間ということになります。その場合、どのようなポイントがあるでしょう。
今回は Dynamics CRM 4.0 と Inernet Explorer クライアントで考えてみます。
1. IE 上での操作からリクエストの送信まで ← クライアント PC のパフォーマンス
2. リクエストの送信から、受信まで ← ネットワークパフォーマンス
3. リクエスト受信から、内部処理完了まで ← サーバ類 (CRM サーバや SQL サーバ)のパフォーマンス
4. レスポンスの返信 ← ネットワークパフォーマンス
5. レスポンスの受信から、IE の内部処理完了、表示まで ← クライアント PC のパフォーマンス
大まかに分けると、上記のようなポイントがあると思いますが、ここで 「すべてのポイント」 に関わるものがあります。
それはズバリ、データ量 です。データ量は、ネットワークパフォーマンスに関係することは当然、各種内部処理にも
大きく影響します。処理するデータが少ないほど、パフォーマンスは向上するはずですよね。
そこで、今回はレポート表示を行う際の、データ量削減 方法に関して紹介します。
Microsoft Dynamics CRM レポートには、「プリフィルタ (事前フィルタ)」 と呼ばれる機能が存在します。
この機能を使用することで、実際のレポートを表示する 「前段階」 で、結果の内容を絞ることができ、結果、
やりとりするデータ量を削減できるというわけです。 これらの機能は、標準レポートには存在しますが、
カスタムレポートにも、その機能を付けたいと思っている方は多いのではないでしょうか。
以下に、それを実現する 2 つの方法を紹介します。
自動プリフィルタ: この方法はシンプルなクエリに向いていて、テーブルに CRMAF_ という文字列を
つけるだけで、実現可能です。この文字列をテーブル名につけることで、CRM からレポートを作成した際に、
自動でフィルタ機能が有効となります。具体的に、以下に例を挙げます。フィルタなし: SELECT <column1>, <columnN> FROM FilteredAccount;
フィルタあり: SELECT <column1>, <columnN> FROM FilteredAccount AS CRMAF_ FilteredAccount;手動プリフィルタ: この方法は、UNION などを使用する、複雑なクエリに使用します。自動のプリフィルタと
異なり、CRM にレポートを作成した際に、自動でフィルタ機能が有効になる種類のものではありません。
レポート作成時に、「レポートパラメーター」 を使用してレポートの作成を行ってください。この機能は、
SQL Server Reporting Service の機能となるため、今回は詳細を割愛します。
また、自動フィルタ機能を利用した場合には、実際にレポートを表示する際に、「既定のフィルタ」 を作成することが
可能です。既定のフィルタを作成しておけば、よく使うフィルタが事前に定義できます。
1. CRM より 「ワークプレース」 の 「レポート」 を選択する。
2. 既定のフィルタを編集したいレポートを選択する。
3. メニューバーにある、「その他の操作」 から 「既定のフィルタの編集」 をクリックする。
4. 任意のフィルタを作成したら、「既定のフィルタの保存」 をクリックして保存する。
以上で、すべてです。パフォーマンス問題は関心が高そうなので、これからもできるだけ取り上げたいと思います。
※今回紹介した内容は、日本語版 SDK に含まれています。是非 「レポートでのフィルタの使用」 をご覧ください。
参考情報:
Microsoft Dynamics CRM 4.0 ソフトウェア開発キット
https://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=82e632a7-faf9-41e0-8ec1-a2662aae9dfb
情報元: Using Data Pre-Filtering in Microsoft Dynamics CRM Reports
https://blogs.msdn.com/crm/archive/2009/11/13/using-data-pre-filtering-in-microsoft-dynamics-crm-reports.aspx
- Dynamics CRM サポート 中村 憲一郎