目標に複雑なロールアップ基準を追加するには、ロールアップ クエリ (GoalRollupQuery) エンティティを使用します。 たとえば、特定の製品ラインの売上や特定の担当地域における売上を指定できます。
ロールアップ クエリは、異なる目標で使用できます。 ただし、特定の目標に関連付けられているロールアップ クエリは、その目標にのみ適用されます。 上位の目標に対して指定されているロールアップ クエリが、下位の目標に継承されることはありません。 下位の目標は、同じクエリを使用することも、別のクエリを使用することもできます。 ロールアップ クエリは、目標に関連付けられているロールアップ フィールド レコードに指定されている、同じエンティティの種類を使用する必要があります。 目標が受注の売上を追跡しているのに、関連するクエリが営業案件エンティティを使用していると、目標レコードを作成または更新するときに例外がスローされます。
Note
目標ロールアップ クエリで返すことのできるレコードの最大数は 5000 です。
エンティティ条件を指定するには、GoalRollupQuery.FetchXml 属性を使用します。 クエリのエンティティの種類を指定するには、GoalRollupQuery.QueryEntityType 属性を使用します。
Note
GoalRollupQuery.QueryEntityType 属性に指定できるテーブルでは、EntityMetadata、true、IsValidForAdvancedFind、IsUserOwned の各 IsCustomizable 属性を CanCreateAttributes に設定する必要があります。 次のテーブルは、この属性では指定できません: SharePointDocumentLocation、SharePointSite、MailMergeTemplate。
目標指標の種類に応じて、実績、進行中、およびユーザー定義の金額または件数データのフィルター処理を行うクエリを使用できます。 次の表は、目標指標の種類と、各種類のクエリを指定する際に使用できる目標エンティティ属性を示しています。
| 目標指標の種類 | ロールアップ クエリの属性 |
|---|---|
| 金額 (金額型) | Goal.RollUpQueryActualMoneyIdGoal.RollUpQueryCustomMoneyIdGoal.RollUpQueryInprogressMoneyId |
| 金額 (整数型) または件数 | Goal.RollupQueryActualIntegerIdGoal.RollUpQueryCustomIntegerIdGoal.RollUpQueryInprogressIntegerId |
| 金額 (小数型) | Goal.RollUpQueryActualDecimalIdGoal.RollUpQueryCustomDecimalIdGoal.RollUpQueryInprogressDecimalId |
指定のロールアップ属性の目標に関係するレコードを対象とするクエリには、次の句が含まれている必要があります。
Goal.ConsiderOnlyGoalOwnersRecords値。GoalRollupQuery.FetchXml内で指定される FetchXML 式。参照される目標指標の対応するロールアップ フィールドに指定される日付の範囲 (
RollupField.DateAttribute)、状態、および進捗状況。
ダブル カウントなどの誤った結果を回避する
クエリは、ロールアップの結果をフィルター処理するのに効果的です。 ただし、注意して使用しないと、"ダブル カウント" やその他誤った結果を招く可能性があります。 次の例では、クエリが望ましくない結果にどのように影響するかを示します:
特定の営業担当者の受注を追跡しています。 しかし、ロールアップは受注を返しませんでした。 このシナリオは、使用したクエリで、営業担当者が顧客を持つ担当地域が除外された場合に発生する可能性があります。
営業担当者に対して 2 つの目標が設定されています。 1 つの目標では特定の製品の営業案件を追跡し、もう 1 つの目標では特定の担当地域の営業案件を追跡します。 営業案件に、指定の担当地域での指定の製品の販売が含まれる場合、この営業案件によってもたらされる売上は両方の目標に含まれます。 これらの目標の上位の目標が同じ場合、上位の目標にその合計が追加され、ダブル カウントが生じます。
次のガイドラインに従うことによって、ダブル カウントなどの誤った結果を防ぐことができます。
Goal.ConsiderOnlyGoalOwnersRecords属性をtrueに設定して、目標の所有者が所有するレコードのみを使用する。営業担当者に対して、複数の目標を同じ期間に割り当てない。
期待する結果が得られることが定かでない場合は、クエリを使用しない。