Dynamics CRM 2011 カスタムレポート その 1 - フィルター化されたビュー vs. FetchXML
みなさま、あけましておめでとうございます。
今年も Microsoft Dynamics CRM および弊社サポートをよろしくお願いいたします。
年末年始はどのように過ごされましたでしょうか。私はずっと Windows Server 2012 の
検証を行っていました。素晴らしい新機能が満載ですので、是非お試しください。
2013年最初の記事は北米 PFE ブログよりレポートに関するトピックをお届けします。
レポート開発ではよく話題になる、フィルター化されたビューと FetchXML の比較です。
元記事: Custom Reporting in Microsoft Dynamics CRM - Fetch vs. Filtered Views
===========================================================
Microsoft Dynamics CRM 2011 を利用していて、レポートウィザードや高度な検索、
また既存のレポートでは要件を満たせない為に独自にレポート開発が必要な場合が
良くあります。今後カスタムレポートの選択肢や技術的な問題の解決に関して情報を
提供する予定であり、今回はその第 1 回となります。
Microsoft Dynamics CRM 2011 で利用できるカスタムレポートには、2 種類があります。
1 つは SQL Server 上のフィルター化されたビューを直接クエリすることでデータを取得
する方法と、もう 1 つは FetchXML を利用して、Web サービス経由でデータを取得する
方法です。いずれも Business Intelligence Developer Studio を利用した開発が可能です。
今回の記事ではこれらの 2 つの選択肢について、それぞれの違を取りあげます。
クエリの種類
FetchXML
FetchXML は Microsoft Dynamics CRM でサポートされるクエリ言語です。T-SQL の機能
に似た内容をサポートします。FetchXML はユーザービューやシステムビューの保存に
利用されており、高度な検索の実行でも利用されます。FetchXML を利用することで、
CRM のセキュリティに準じた結果セットを取得することができます。
また高度な検索で利用したクエリを FetchXML として取得できます。
FetchXML を利用したレポートを開発した場合、レポート実行時に Microsoft Dynamics
CRM の Web サービスに対してクエリが実行されます。SSL を利用することでクエリや
結果セットを暗号化することができます。Microsoft Dynamics CRM Online では、これが
唯一の選択肢となります。
フィルター化されたビュー
Microsoft Dynamics CRM データベースを直接クエリする場合、フィルター化されたビュー
が利用できます。このビューを通してクエリを実行した場合、CRM セキュリティに準じた
結果セットを取得できます。ただしこちらのクエリを利用したカスタムレポートは、設置型
のみでサポートされるため、オンライン環境へ移行することができません。
展開の種類
設置型 (On-Premise)
設置型を利用している場合、より柔軟で複雑なクエリが記述できることから、フィルター化
されたビューを利用したカスタムレポートを利用することが多くなります。しかしその一方で
パフォーマンスの考慮より FetchXML を利用する選択肢もあります。FetchXML を利用した
場合、セキュリティは Microsoft Dynamics CRM サーバーで処理され、データベースへの
クエリではフィルター化されたビューを利用しません。
もし後で述べる FetchXML の制限範囲内でレポートを作成できる場合は、FetchXML は
有力な選択肢となります。
オンライン
オンライン環境では直接データベースにアクセスできないため、FetchXML が唯一の
選択肢となります。開発者のメリットとしては、高度な検索から FetchXML が取得できる
ことで、1 からクエリを記述する手間が省けることと、パフォーマンスがフィルター化された
ビューより向上することが期待できる点です。
以下に FetchXML の制限をあげます。
・ FetchXML では Right Outer 結合および Full Outer 結合をサポートしません。
・ FetchXML ではサブクエリで Exist/In 条件をサポートしません。
・ 取得できるデータは上限が 5000 件となります。
・ UNION SELECT をサポートしません。
・GroupBy および SUM クエリを明示的に指定できません。取得したレコードを
集約することのみサポートされます。
・ 結合できるエンティティ数に上限があります。
・ FetchXML は Microsoft Dynamics CRM データソースのみサポートします。
・ FetchXML は Microsoft Dynamics CRM 固有の技術であるため、学習が必要です。
比較
以下のテーブルに両者の比較をまとめています。
フィルター化されたビュー | FetchXML | |
開発の エクスペリエンス | Business Developer Intelligence Studio、またはレポートビルダーを利用した開発 | Business Developer Intelligence Studio を利用した開発。別途モジュールの取得が必要 |
スキルセット | T-SQL の知識およびレポート開発の経験 | FetchXML の知識およびサポート開発の経験 |
柔軟性 | 複雑なクエリの実行が可能であり、SSRS の機能をフルに利用できる | FetchXML の制限ないでのクエリのみ記述が可能 |
データクエリ | フィルター化されたビューに対する T-SQL クエリ | CRM Web サービスを利用したクエリ |
レポートの実行 | スケジューリングや電子メール通知等が利用可能 | リアルタイム実行のみサポート |
オンラインサポート | サポートされない | サポートされる |
===========================================================
こちらの記事はシリーズということですので、オリジナル記事が投稿され
次第、随時日本語化していきたいと思います。
- Dynamics CRM サポート 中村 憲一郎