フィルターを使用してレポートのパフォーマンスを向上
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
大量のデータ セットを返すレポートは、使いにくく、パフォーマンス上の問題の原因となる場合があります。 レポートに表示するデータを制限するには、データ フィルターを使用します。
Reporting Services でサポートされているデータ フィルター処理に加え、Microsoft Dynamics 365 ではデータの事前フィルター処理もサポートしています。 データの事前フィルター処理の使用には、次のような利点があります。
レポートの範囲を絞り込んで関連性の高いデータを返すようにすることで、状況に即したレポートを作成できる。
関連性の高いデータだけが返されるので、結果セットの取得と表示が速くなる。
"高度な検索" 機能を使用してレポートをフィルター処理できる。
重要
現在のところ、Under 演算子などの階層演算子を使用したレポート クエリは、レポート フィルターでは使用することができません。 階層演算子を使用するレポートを実行しようとしても、レポートは作成されません。
このトピックの内容
フェッチベースのレポートでデータの事前フィルター処理を有効にする
SQL ベースのレポートでデータの事前フィルター処理を有効にする (設置型 Dynamics 365 のみ)
フィルターの概要でフィルターを渡す
既定のフィルター
フェッチベースのレポートでデータの事前フィルター処理を有効にする
フェッチベースのレポートがサポートしているのはデータの自動的事前フィルター処理だけです。 各レポートは複数のデータ セットと複数の FetchXML クエリを持つことができます。 1 つのデータ セットは 1 つの FetchXML クエリをサポートします。 フェッチベースのレポートで主エンティティまたはリンクしているエンティティの事前フィルター処理を有効にするには、enableprefiltering パラメーターの値を "1" に設定し、prefilterparametername プロパティでパラメーター名を指定する必要があります。 このパラメーター名は "CRM_" で始まり、非表示のパラメーターとして指定する必要があります。Microsoft SQL Server ベースのレポートの場合と同様に、FetchXML クエリで指定されるこのパラメーターは FetchXML クエリ内のサブクエリとして機能し、このサブクエリはユーザーがレポートの実行時に [高度な検索] 領域で指定した値によって組み立てられます。
次の例は、FetchXML クエリで主エンティティについて事前フィルター処理を有効にする方法を示しています。
<CommandText
<fetch distinct="false" mapping="logical">
<entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
<attribute name="name" />
<attribute name="accountid" />
</entity>
</fetch>
</CommandText>
<DataSourceName>CRM</DataSourceName>
同じようにして、リンクしているエンティティについても事前フィルター処理を有効にできます。FetchXML クエリでリンクしているエンティティについて異なる事前フィルター処理条件を指定することもできます。それには、prefilterparametername プロパティでパラメーター名として別の一意の名前を指定します。
Microsoft Dynamics 365 Web アプリケーションまたは SQL Server データ ツール のレポート ウィザードを使用せずに、フェッチベースのレポート定義を手動で変更して、主エンティティまたはリンクしているエンティティについて事前フィルター処理を有効にする場合は、次の内容を実行してください。
同じようにして、リンクしているエンティティについても事前フィルター処理を有効にできます。FetchXML クエリでリンクしているエンティティについて異なる事前フィルター処理条件を指定することもできます。それには、prefilterparametername プロパティでパラメーター名として別の一意の名前を指定します。
Microsoft Dynamics 365 Web アプリケーションまたは SQL Server データ ツール のレポート ウィザードを使用せずに、フェッチベースのレポート定義を手動で変更して、主エンティティまたはリンクしているエンティティについて事前フィルター処理を有効にする場合は、次の内容を実行してください。
<fetch distinct="false" mapping="logical"> <entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
prefilterparametername プロパティで指定したものと同じ名前のクエリ パラメーターを作成します。 パラメーター名を CRM_ で始めることにより、非表示のパラメーターとして指定します。
<QueryParameters> <QueryParameter Name="CRM_FilteredAccount"> <Value>=Parameters!CRM_FilteredAccount.Value</Value> </QueryParameter>
同じ名前のレポート パラメーターを作成します。
<ReportParameters> <ReportParameter Name="CRM_FilteredAccount"> <DataType>String</DataType> <Prompt>CRM Filtered Account</Prompt> </ReportParameter> </ReportParameters>
SQL ベースのレポートでデータの事前フィルター処理を有効にする (設置型 Dynamics 365 のみ)
Microsoft Dynamics 365SQL ベース のレポートでデータの事前フィルター処理を有効にする方法には、自動的と明示的の 2 つがあります。
自動的事前フィルター処理
データの自動的事前フィルター処理は単純なクエリに適しています。 レポートでデータの自動的事前フィルター処理を有効にするには、クエリでエンティティ テーブルのエイリアス名を使用できます。 これを行うには、CRMAF_ で始まるエイリアス名を使用します。
次の例は、Account エンティティに対して事前フィルター処理を有効にするように変更した単純なクエリを示しています。
事前フィルター処理を使用しないクエリ |
自動的事前フィルター処理が有効になるように変更したクエリ |
|||||
---|---|---|---|---|---|---|
```sql
SELECT
CRMAF_ 接頭辞を使用してデータの自動的事前フィルター処理機能を有効にすると、Microsoft Dynamics 365 へのクエリのアップロード時に、Microsoft Dynamics 365 によってクエリに変更が加えられてパラメーター (たとえば、P1) が挿入されます。たとえば、次の例のようになります。
|