Dynamics CRM 2011 では、BIを支援するグラフ機能が提供されています。グラフはレコードの一覧と連携してドリルスルー(グラフ内で選択したカテゴリに含まれるレコードのみを一覧に表示)ができ、うまくはまれば非常に強力な機能です。

このグラフはビューのフィルタ条件に一致するレコードの特定フィールドの最大値、合計値、平均値、該当レコード数等の集約値を表示できます。一方 Dynamics CRM 2011は、標準一覧のレコードのカウント数は5000まで(5000より多い場合は5000+と一覧の下部に表示される)表示される。Excelエクスポートは10000レコードまで出力されるという制限があります。

OnPremise 版でのExcelエクスポートの10000レコードを緩和する方法はDynamics CRM 4.0と同様です
[Dynamics CRM] Dynamics CRM 4.0 のExcel エクスポートで出力できるレコードの最大数を変更する方法

レコード数制限は、パフォーマンス確保のために存在します。んじゃぁグラフで集約処理をする場合にレコード数の制限をうけるのかということを調べてみました。結論から先に述べると検証の結果レコード数に制限は受けません。あります。(2011/12/30修正)  正確に確認したわけではありませんが、SDKのドキュメントによると50000レコードになります。

確認環境は次の通り

  • Windows Server 2008 R2 上に構築した Dynamics CRM 2011 Update Rollup 5 オールインワン環境

集約用のクエリでのレコードリミット(既定値50000)については、次のURLのAggregateQueryRecordLimitの説明を参照ください。

展開テーブル メタデータ (詳細設定)
http://msdn.microsoft.com/ja-jp/library/gg334634.aspx

1.検証方法

カスタムエンティティを作成して、値が1の通貨フィールドをもつレコードを20000件インポートします。グラフ機能を使用して作成したレコードのレコード件数と金額の合計値を表示します。レコード数の制限を受けなければレコード数は20000, 金額も20000 となります。

2011/12/30 追加のテストで、60000レコードを追加した場合のグラフ表示がどうなるかも検証します。

2.結果

早速結果を掲載します。下図を見てください。値段という通貨型フィールドに1を設定してインポートした20000件レコードの合計値とレコード数を棒グラフで表示しています。グラフエリアの赤枠にあるように値が20000となっています。レコード制限は受けていないみたいです。ちなみにビュー下部のオレンジの枠にレコード数が5000+ と表示されていることも確認できます。Dynamics CRM 2011 からはフィルタ条件に該当するレコード数が表示されるようになりました。フィルタ条件に該当するレコード数が5000より多い場合は5000+と表示されます。

次の60000レコードインポート後のグラフ表示結果です。レコード数の上限を超えています。レコード数を減らしてください。という赤文字のメッセージが表示されました。画像はありませんが、40000レコードの場合もグラフ表示できていたので、50000レコード制限が機能したものと考えられます。

3.まとめ

検証は以上です。20000件カウントされているので、20000レコード全部に対して集約処理が適用されたことになります。なので、Excelエクスポートの10000件や該当レコード数表示5000件の制限は受けないようです。

2011/12/30追記
追検証の結果、既定値のままでは50000レコードを超えると集約処理用のクエリはエラーとなるのでグラフも表示できなくなります。展開テーブルの詳細設定情報を取得するにはRetrieveAdvancedSettingsRequest を使用します。更新するには、UpdateAdvancedSettingsRequest を使用します。