使用 Let 函数手动累积变量的示例
有时,Salesforce Spiff 中的累积变量无法计算金额,因此您必须使用 let() 函数手动创建累积变量。
所需的 Edition
| 适用于:Salesforce Classic(并非在所有组织中可用)和 Lightning Experience |
| 适用于:Enterprise、Unlimited 和 Developer Edition |
| 另行付费后适用于:启用了 Web 服务 API 的 Professional Edition |
累积变量不计算金额的一个常见原因是,当求和的期间因规则中的每条记录而异时。例如,某个规则可能显示付款日期在期间内的业务机会,而每个业务机会的结束日期在不同的年份,因此无法通过累积变量计算年度完成情况。
使用 let() 函数,您可以为字段分配别名,以便 Spiff 可以将动态值(例如每个记录的结束日期)与静态值(例如特定交易的结束日期)进行比较。例如,您可以将别名 ThisDealsCloseDate 分配到有助于在读取逻辑时识别该字段的字段。
单排序
在此示例中,计算按 CloseDate 排序,汇总当前交易之前的交易。第一笔交易价值 435.7 万美元,是 1 月至 4 月结束的交易总额,但不包括 5 月 1 日。
let(ThisDealsCloseDate, CloseDate,
sumif(ClosedInYearDataset, CloseDate < ThisDealsCloseDate, ARR))
几乎总是需要辅助排序。如果多个交易在同一天完结,手动累积变量会为每个交易返回相同的值,因为它们不会进一步排序。您可以引入其他let()函数来按其他条件排序,例如 DealID 或 DealValue,并确保每个交易都经过唯一评估。
辅助排序
在前面的示例中,主要排序是 CloseDate。要展开此示例并进一步区分当天结束的交易,请添加按 ID 排序的次要排序。该逻辑包括额外的换行符和缩进,以识别每种排序。
let(ThisDealsCloseDate, CloseDate,
let(ThisDealsId, Id,
sumif(ClosedInYearDataset,
CloseDate < ThisDealsCloseDate OR
(CloseDate = ThisDealsCloseDate AND Id > ThisDealsId)
, ARR)))
现在,第 2 行至第 4 行的累积值不同。当天增加的值显示了辅助排序的有效性。
回看
涵盖多个实现期的排序条件是手动累积变量的最常用用例。在此示例中,考虑根据付款日期显示交易的规则,但佣金计算基于结束日期。佣金基于年度完成情况,因此,如果规则中计算的业务机会的结束日期跨越多年,则需要手动累积变量。如果业务机会都具有相同的结束年份,则累积变量可用,因为业务机会都使用相同的数据筛选器。
如果并非所有交易都可以使用相同的数据筛选器,您可以为每个数据筛选器使用多个累积变量,或动态手动累积。通常,推荐手动累积变量,因为它需要更少的维护。但是,如果 let() 函数导致超时或内存问题,则需要多个累积变量。
确定您想要计算的回溯时间。您可以在每笔交易完结时使用数据筛选器,但如果较短的时间段足够,请使用较小的数据筛选器。在此示例中,使用类似 ClosedInPast24Months 的内容替换 AllClosedOpportunitiesDataFilter。
调整排序。此示例计算年度完成情况,规则中的业务机会的结束日期是 2022 年和 2023 年。对于 2022 年结束的交易,将 2022 年业务机会与当前交易相加,对于 2023 年结束的交易,将 2023 年业务机会相加。数据筛选器涵盖更长的周期,主要排序包含开始日期。
let(ThisDealsCloseDate, CloseDate,
let(ThisDealsId, Id,
sumif(AllClosedOpportunitiesDataFilter,
(CloseDate >= beginning_of_year(ThisDealsCloseDate) AND CloseDate < ThisDealsCloseDate) OR
(CloseDate = ThisDealsCloseDate AND id < ThisDealsId)
, ARR__c)))单排序示例仅涵盖了年初的数据筛选器,因此不需要开始日期筛选器。
如果业务机会于 2022 年 8 月 15 日结束,ID 为 123456abcd,逻辑会将业务机会与这些条件相加。
- CloseDate >= 2022-01-01 (beginning_of_year(2022-08-15))
- CloseDate < 2022-08-15
- CloseDate = 2022-08-15 AND ID < 123456abcd

