次の方法で共有


複雑な目標基準を追加する

目標に複雑なロールアップ基準を追加するには、ロールアップ クエリ (GoalRollupQuery) エンティティを使用します。 たとえば、特定の製品ラインの売上や特定の担当地域における売上を指定できます。

ロールアップ クエリは、異なる目標で使用できます。 ただし、特定の目標に関連付けられているロールアップ クエリは、その目標にのみ適用されます。 上位の目標に対して指定されているロールアップ クエリが、下位の目標に継承されることはありません。 下位の目標は、同じクエリを使用することも、別のクエリを使用することもできます。 ロールアップ クエリは、目標に関連付けられているロールアップ フィールド レコードに指定されている、同じエンティティの種類を使用する必要があります。 目標が受注の売上を追跡しているのに、関連するクエリが営業案件エンティティを使用していると、目標レコードを作成または更新するときに例外がスローされます。

Note

目標ロールアップ クエリで返すことのできるレコードの最大数は 5000 です。

エンティティ条件を指定するには、GoalRollupQuery.FetchXml 属性を使用します。 クエリのエンティティの種類を指定するには、GoalRollupQuery.QueryEntityType 属性を使用します。

注意

GoalRollupQuery.QueryEntityType 属性に指定できるテーブルでは、IsValidForAdvancedFindIsUserOwnedIsCustomizableCanCreateAttributes の各 EntityMetadata 属性を true に設定する必要があります。 SharePointDocumentLocationSharePointSiteMailMergeTemplate の各テーブルは、この属性に指定できません。

目標指標の種類に応じて、実績、進行中、およびユーザー定義の金額または件数データのフィルター処理を行うクエリを使用できます。 次の表は、目標指標の種類と、各種類のクエリを指定する際に使用できる目標エンティティ属性を示しています。

目標指標の種類 ロールアップ クエリの属性
金額 (金額型) Goal.RollUpQueryActualMoneyId

Goal.RollUpQueryCustomMoneyId

Goal.RollUpQueryInprogressMoneyId
金額 (整数型) または件数 Goal.RollupQueryActualIntegerId

Goal.RollUpQueryCustomIntegerId

Goal.RollUpQueryInprogressIntegerId
金額 (小数型) Goal.RollUpQueryActualDecimalId

Goal.RollUpQueryCustomDecimalId

Goal.RollUpQueryInprogressDecimalId

指定のロールアップ属性の目標に関係するレコードを対象とするクエリには、次の句が含まれている必要があります。

  • Goal.ConsiderOnlyGoalOwnersRecords 値。

  • GoalRollupQuery.FetchXml 内で指定される FetchXML 式。

  • 参照される目標指標の対応するロールアップ フィールドに指定される日付の範囲 (RollupField.DateAttribute)、状態、および進捗状況。

ダブル カウントなどの誤った結果を回避する

クエリは、ロールアップの結果をフィルター処理するのに非常に効果的です。 しかし、注意して使用しないと、"ダブル カウント" など、誤った結果を招きます。 望ましくない結果を招くクエリの例を、次に示します。

  • 特定の営業担当者の受注を追跡しています。 しかし、ロールアップで受注が返されませんでした。 使用したクエリで、営業担当者の顧客が存在する担当地域を除外した場合に、このような状態が発生します。

  • 営業担当者に対して 2 つの目標が設定されています。 1 つの目標では特定の製品の営業案件を追跡し、もう 1 つの目標では特定の担当地域の営業案件を追跡します。 営業案件に、指定の担当地域での指定の製品の販売が含まれる場合、この営業案件によってもたらされる売上は両方の目標に含まれます。 これらの目標の上位の目標が同じ場合、上位の目標にその合計が追加され、ダブル カウントが生じます。

    次のガイドラインに従うことによって、ダブル カウントなどの誤った結果を防ぐことができます。

  • Goal.ConsiderOnlyGoalOwnersRecords 属性を true に設定して、目標の所有者が所有するレコードのみを使用する。

  • 営業担当者に対して、複数の目標を同じ期間に割り当てない。

  • 期待する結果が得られることが定かでない場合は、クエリを使用しない。

目標管理テーブル
サンプル: ロールアップ クエリを使用した目標の追跡
目標の合計のロールアップ