どうすればレポート表示は速くなる?

みなさん、こんにちは。

ハロウィンも終わって、後はクリスマスを残すのみとなりましたが、みなさんは、クリスマスプレゼントを
あげる側ですか?もらう側ですか?私は当然 (依然?) もらう側です。

さて、今回はパフォーマンス関連として、レポートに関する 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 サポート 中村 憲一郎