创建汇总字段以聚合值
此主题适用于 Dynamics 365 Customer Engagement (on-premises)。 有关此主题的 Power Apps 版本,请参阅: 在 Power Apps 中定义汇总字段
汇总字段用于帮助用户通过监控关键业务指标获取数据见解。 汇总字段包含一个用与指定记录相关的记录计算所得的聚合值,比如客户的开放商机。 此外,您能够从与记录直接相关的活动中,比如电子邮件、约会和通过活动方实体与记录间接相关的活动中聚合数据。 在更复杂的方案中,可以通过记录层次结构聚合数据。 作为一名管理员或定制员,您可以通过使用此功能来定义汇总字段,而无需开发人员专门编写代码。
汇总字段的优点和能力
汇总字段的优点和能力包括:
可视编辑会更加容易。 通过使用字段编辑器创建汇总字段,就像您创建常规字段一样。
聚合函数的广泛选择。 可以使用以下函数聚合数据:
SUM
、COUNT
、MIN
、MAX
和AVG
。对聚合的完全筛选器支持。 在设置多个条件时,可为源实体或相关实体设置各种筛选器。
与用户界面的无缝集成。 可以将汇总字段包含在在表单、视图、图表和报表中。
汇总字段是解决方案组件。 您可以轻松地在组织之间将汇总字段作为组件进行传输,并在解决方案中分发。
汇总字段和计算字段相辅相成。 可以使用汇总字段作为计算字段的一部分,反之亦然。
汇总字段的示例包括:
某位客户的开启商机的总预计收入
层次结构中所有客户的开启商机的总预计收入
商机(包括子商机)的总预计收入
由市场活动生成的合格潜在客户的总预计收入
层次结构中所有客户的优先级较高的开启案例的数量
客户所有优先级较高的开启案例的最早创建时间
每个汇总字段创建带有 <fieldname
>_date 和 <fieldname>
_state suffix pattern 的两个附加字段。 字段 _date 属于日期时间数据类型,并且 _state 字段是整数数据类型。
_date 字段是系统创建的字段,用于存储计算汇总字段值的最后日期和时间。
状态字段有一些值:
州 | Description |
---|---|
0 => NotCalculated | 尚未计算字段值。 |
1 => Calculated | 根据 _date 字段中上次的更新时间计算字段值。 |
2 => OverflowError | 字段值计算导致溢出错误。 |
3 => OtherError | 字段值计算失败,因为发生内部错误。 运行以下计算作业将有可能修复上述错误。 |
4 => RetryLimitExceeded | 字段值计算失败,由于并行的最大数量与锁定冲突,导致超出了计算的最大重试次数。 |
5 => HierarchicalRecursionLimitReached | 字段值计算失败,因为达到了计算限制的最大层次结构深度。 |
6 => LoopDetected | 字段值计算失败,因为在记录的层次结构中检测到了递归循环。 |
汇总计算
汇总由在后台异步运行的计划系统作业进行计算。 必须以管理员身份查看和管理汇总作业。 若要查看汇总作业,请转到设置>系统作业>查看>定期系统作业。 若要快速找到相关作业,可以通过系统作业类型进行筛选:批量计算汇总字段或计算汇总字段。
大规模计算汇总字段是一个定期作业,每一个汇总字段创建。 在创建或更新汇总字段后,会运行一次。 该作业在所有现有包含此字段的记录中重新计算指定的汇总字段值。 默认情况下,在创建或更新字段后,该作业将运行 12 小时。 在完成该作业后,它会自动计划在大约 10 年的遥远未来运行。 如果修改了字段,该作业重置为在更新后 12 小时再次运行。 延迟 12 小时以确保在非组织操作时段大规模计算汇总字段运行。 建议管理员在创建或修改汇总字段后,调整大规模计算汇总字段作业的开始时间,以这样一种方式使它在非营运时间运行。 例如,在午夜运行作业以保证高效处理汇总字段。
计算汇总字段是一个定期作业,进行指定实体的现有记录中所有汇总字段的增量计算。 每个实体只有一个计算汇总字段。 增量计算意味着在上一次大规模计算汇总字段作业完成执行后,计算汇总字段作业才处理创建、更新或删除计算汇总字段作业流程的记录。 默认最大定期设置为一小时。 在删除上一个汇总字段时,创建并删除实体上的第一个汇总字段,并自动创建该作业。
联机重新计算选项。 如果您悬停在表单中的汇总字段上,您可以看到上次汇总时间并且可以通过选择字段旁的刷新图标刷新汇总值,如下所示:
使用联机重计算选项时要注意(在表单中手动刷新):
对于您要求刷新的实体和源记录,您需要有读访问权限。 例如,若您要计算客户开放商机的预计收入,您无需拥有商机实体的写入权限,只要客户实体的即可。
此选项仅在联机模式中可用。 在脱机工作时,无法使用此选项。
在汇总刷新期间,最大记录数限制为 50,000 个记录。 万一遇到分层汇总,这适用于跨层次结构的相关记录。 如果超过限制,则会看到错误消息:“无法联机执行计算,因为已达到 50,000 条相关记录的计算限制。” 在由系统作业自动重新计算汇总时,不适用此限制。
对于源记录,最大层次结构深度限制为 10。 如果超过限制,则会看到错误消息:“无法联机执行计算,因为已达到 10 个源记录的层次结构深度限制。” 在由系统作业自动重新计算汇总时,不适用此限制。
作为系统管理员,则可修改汇总作业的定期模式、延迟、暂停或恢复汇总作业。 但是,您无法取消或删除汇总作业。 若要暂停,延迟,继续或修改定期模式,请转到设置>系统作业。 在视图中,选择“定期系统作业”。 在导航栏上,选择操作并选择所需操作。 对于大规模计算汇总字段作业,可选的有:重新开始、推迟和暂停。 对于计算汇总字段作业,可选项为:修改定期、继续、推迟和暂停。
汇总字段业务情况
让我们看一下多个汇总字段方案。 我们要从相关记录中聚合记录数据,使用(或不使用)层次结构。 我们还要从相关活动的记录中,和通过活动方实体与记录间接相关的活动中聚合数据。 在每个示例中,我们通过使用字段编辑器来定义汇总字段。 若要打开字段编辑器,打开方案资源管理器,展开组件>实体。 选择所需实体并选择字段。 选择新建。 在编辑器中,为字段提供所需的信息,包括字段类型和数据类型。 在选择数据类型后,在字段类型中,选择汇总。 数据类型包含小数或整数、货币和日期/时间。 选择字段类型旁边的编辑按钮。 这将进入汇总字段定义编辑器。 汇总字段定义包括三个部分:源实体、相关实体和聚合。
在源实体 部分,您指定汇总字段定义的实体,以及是否通过层次结构进行聚合。 您可以添加带有多个条件的添加筛选器来指定想要用于汇总的层次结构中的记录。
在相关实体 部分,您指定进行聚合的实体。 当您选择汇总源实体的层次结构时,此选项可选。 您可以添加带有多个条件的筛选器来指定计算中要使用的相关记录。 例如,您包括来自于开启商机的大于 1,000 美元年收入的收入。
在聚合部分,您指定要计算的度量。 您可以选择可用的聚合函数,例如 SUM、COUNT、MIN、MAX 或 AVG。
在相关记录中聚合记录数据
在此示例中,尚未使用层次结构。 在相关开启商机中计算客户的总预计收入。
在层级结构的子记录中聚合记录数据
在此示例中,我们在结构层次中计算商机(包括子商机)的总预计收入。
在层次结构的相关记录中聚合记录数据
在此示例中,我们在层次结构中计算所有客户的开启商机的总预计收入。
在所有相关活动中聚合记录数据
在此示例中,我们计算出所有与客户相关活动的总花费时间和账单。 这可以包括花费在电话、约会或自定义活动上的时间。
在较早版本中,可以为电话联络、传真或约会之类的单独活动定义汇总字段。 但是为了达到下面例子中的结果,必须使用计算字段来汇总数据。 现在,可以通过为活动方定义汇总字段来一步完成所有事情。
通过活动方实体,从所有相关活动和间接相关活动中聚合记录数据。
在此示例中,我们计数发送给帐户的总邮件数,会在帐户邮件的“至收件人”行或“抄送收件人”行中显示。 这是通过为汇总字段定义中的活动方实体指定筛选器中的参与类型来完成的。 如果您不使用筛选,则计算中会使用所有可用的活动参与类型。 有关特定活动可用活动方实体和参与类型的详细信息,请参阅 ActivityParty 实体。
使用 AVG 运算符,从相关记录中聚合记录数据。
在此示例中,我们计算得出所有与客户相关商机的平均预计收入。
以下示例演示了如何从客户层次结构的相关商机中计算平均预计收入。 层次结构中的每个级别都可以看到平均预计收入。
汇总字段注意事项
使用汇总字段时请注意某些条件和限制:
您最多可以定义 100 个组织汇总字段,最多为每个实体定义 10 个汇总字段。
通过汇总字段更新无法触发工作流。
工作流等待条件无法使用汇总字段。
不支持汇总字段之上的汇总。
汇总无法引用使用其他计算字段的计算字段,即使其他计算字段的所有字段在当前实体中。
如果汇总字段使用依赖于有时限函数(如
NOW()
、UTCNOW()
、ISUTCTODAY()
或UTCTODAY()
)的公式字段,汇总字段不会自动更新。 必须使用联机重新计算选项(在窗体上手动刷新)或重新计算按钮来计算最新的汇总字段值。汇总只能将筛选器应用到源实体或相关实体、简单字段或非复杂计算字段。
只能通过具有 1:N 关系的相关实体执行汇总。 无法通过 N:N 关系执行汇总。
无法通过活动实体或活动方实体的 1:N 关系执行汇总。
业务规则、工作流或计算字段始终使用汇总字段上一次的计算值。
在系统用户上下文中聚合汇总字段。 所有用户都可以看到相同的汇总字段值。 通过限制可以访问汇总字段的人员,您可以控制具有字段级别安全性 (FLS) 的汇总字段可见性。 更多信息:字段级安全性。
如果聚合字段的精度大于汇总字段的精度,则在执行聚合之前,聚合字段精度向下舍入到汇总字段的精度。 为了说明此行为,让我们看看一个具体的例子。 让我们假定帐户实体上的汇总字段用于计算相关商机的总预计收入,具有两位小数的精度。 商机 实体的“预计收入”字段是四位小数精度的聚合字段。 在我们的例子中,帐户有两个相关的商机。 预计收入的聚合总和计算如下所示:
预计 第一个商机的收入:$1000.0041
预计 第二个商机的收入:$2000.0044
预计收入总和 收入:$1000.00 + $2000.00 = $3000.00
如您所见,在执行聚合之前,聚合字段的精度被舍入到两位小数。
某些实体窗体,例如帐户或联系人,现在就包含关联网格。 例如,帐户窗体包含联系人、案例、商机和其他网格。 在帐户窗体中显示的某些记录直接关联到帐户记录;其他记录通过与其他记录的关系间接关联到帐户记录。 相比之下,汇总字段聚合只使用在汇总字段定义中显式定义的直接关系。 不考虑其他关系。 为了说明这种行为上的差异,让我们看看以下例子。
帐户 A1 有一个主要联系人 P1。 案例 C1 与帐户 A1 关联(C1.Customer 字段 = A1),并且案例 C2 与联系人 P1 关联(C2.Customer 字段 = P1)。
A1 记录的帐户窗体中的案例网格具有两个案例:C1 和 C2。
帐户实体上的汇总字段,称为“案例总数”,用于统计与帐户关联的案例的数量。
在帐户汇总字段定义中,我们指定与帐户具有客户关系的案例。 在聚合之后,案例总数等于 1(案例 C1)。 案例 C2 未包含在总数中,因为它与联系人直接相关,而不是帐户,并且不能在帐户汇总字段定义中显式定义。 结果,汇总操作返回的案例总数与在案例网格中显示的案例数量不一致。