了解事务匹配引擎

本主题帮助您了解事务匹配引擎如何对事务进行评估。

本主题中的示例假定源系统数据源和子系统数据源中存在以下事务。


图中显示了不同日期的三个源系统和子系统事务

匹配规则

  1. 源系统“发票”(Invoice) 与子系统发票确切匹配

  2. 源系统在子系统日期 -1 到 +3 的容差范围内匹配

  3. 源系统“金额”(Amount) 与子系统金额确切匹配

源系统和子系统“金额”属性是平衡属性。

评估顺序/第一个匹配者胜出

将按照事务在数据库中的存在顺序对事务进行匹配评估,并且将从进行匹配评估的事务中选择满足条件的第一个事务作为匹配项。

评估顺序/首先匹配最小的事务 ID

加载事务时,会按顺序为其分配事务 ID。因此,具有最低事务 ID 的匹配事务意味着它首先被加载,并且将是第一个要匹配的事务。

在 1 对 1 匹配中,如果两个事务都有资格与第三个事务匹配,但是只能匹配一个事务,则将选择事务 ID 最小的事务作为匹配项。

对于子集规则,匹配功能将在创建匹配过程中根据金额和事务 ID 对事务进行排序。如果两个事务具有相同的金额,则匹配中将使用事务 ID 最低的事务。

请注意,如果在选择“无模糊项”的情况下运行同一个规则,则所有事务都将保持不匹配(预期工作方式)。

评估容差

可以采用三种方法设置容差级别,以允许匹配具有差异的事务。您可以设置:

  • 应用于事务的容差差异值。例如,在差异最多为 -1 和 +3 的情况下自动匹配。
  • 以百分比表示的容差阈值级别。例如,在最多为 0.5% 的金额值的情况下自动匹配。
  • 以百分比和差异金额表示的容差阈值级别。例如,在最多为 1.0% 的金额值和最多为 100.00 的最高金额的情况下自动匹配。

    注:

    高/低容差的百分比值不能超过 100,该百分比值可用于数字整数数据源属性。

评估设置为值的容差

在评估一组容差值的容差时,计算受向事务应用高/低容差值的方式影响。例如,在日期值应用了容差的样本事务中,经授权的容差为 -1 到 +3。如果向源系统表中的第一个记录应用这些值,则子系统表中的第一个记录将满足匹配规则,因为 9 月 18 日距离 9 月 15 日小于或等于 +3 天。但是,如果我们向子系统事务(而非源系统)应用这些容差,则匹配将失败,因为 9 月 15 日距离 9 月 18 日不小于或等于 -1 天。

注:

虽然以上示例使用了日期容差,但是可以对日期、时间和整数数据类型的容差应用相同的逻辑。

为确保一致的结果,在评估容差时我们选择使用以下方法:

评估 1 对 1 规则类型

对于 1 对 1 规则类型,我们将源事务视为“基本或锚定事务”。以下示例显示了评估方式。在以下示例中,我们假设日期容差的开始设置为零 (0),结束设置为 +3。

  1. 从第一个源事务开始,将容差限制与事务的日期值相加以得出子系统中日期值的可接受范围。
  2. 然后,将选择子系统中满足匹配条件的第一个事务。在我们的示例中,第一个事务的源日期值是 9 月 15 日。
  3. 将 0 到 +3 容差加到子系统事务后,会选择源系统中满足以下条件的第一个事务作为匹配项:日期值大于或等于 9 月 15 日且小于或等于 9 月 18 日。此匹配项在下面以绿色标出:


    图中显示了第一个事务源系统示例。
  4. 继续处理第二个源事务(日期值为 9 月 16 日),在子系统中查找日期值大于或等于 9 月 16 日且小于或等于 9 月 19 日的第一个事务。匹配项 9 月 17 在范围内,并在下面以红色标出:


    图中显示了第二个子系统事务示例。
  5. 继续处理第三个源系统事务(日期值为 9 月 17 日),假设我们需要在源系统中查找满足以下条的第一个事务:日期值大于或等于 9 月 16 日且小于或等于 9 月 20 日。因为源系统中没有满足此条件的事务,因此没有创建匹配项。

注:

对于单源匹配流程,正事务与负事务匹配。

评估 1 对多规则类型

对于 1 对多规则类型,源系统事务是基本事务。

注:

对于 1 对多规则类型,除了“平衡属性”条件外,还必须定义一个规则条件,该条件可以为“完全匹配”或“按容差匹配”。

评估多对 1 规则类型

对于多对 1 规则类型,子系统事务是基本事务。

注:

对于多对 1 规则类型,除了“平衡属性”条件外,还必须定义一个规则条件,该条件可以为“完全匹配”或“按容差匹配”。

评估多对多规则类型

对于多对多规则类型,没有基本事务。而是,将使用一组规则对条件进行评估。

以下过程用于评估已指定日期容差的多对多规则类型的匹配。

  1. 从源系统中查找最小日期值和最大日期值。
  2. 在子系统中,使用以下公式计算在确定匹配时可以允许的最小日期值和最大日期值:
    • 最小子系统日期必须等于或大于最大源系统日期 + 日期容差范围的起始值
    • 最大子系统日期必须等于或小于最小源系统日期 + 日期容差范围的结束值
  3. 确定匹配时,请考虑计算的最小子系统日期和最大子系统日期内的所有子系统事务

请注意,最小子系统日期必须等于或小于最大子系统日期。

示例:具有日期容差的多对多规则类型

在此示例中,匹配允许的日期容差为 -2 到 +3。

考虑以下门店 ID 为 3738 的源系统事务。

表 8-1 源系统事务

门店 ID 金额 日期
3738 $715 2023 年 2 月 7 日
3738 $595 2023 年 2 月 7 日
3738 $960 2023 年 2 月 4 日
3738 -$138 2023 年 2 月 4 日

在源系统事务中,最小日期值为 2023 年 2 月 4 日,最大日期值为 2023 年 2 月 7 日。

考虑以下门店 ID 为 3738 的子系统事务。

表 8-2 子系统事务

门店 ID 金额 日期
3738 $387 2023 年 2 月 5 日
3738 $211 2023 年 2 月 5 日
3738 $378 2023 年 2 月 7 日
3738 $342 2023 年 2 月 5 日
3738 $714 2023 年 2 月 6 日
3738 $100 2023 年 2 月 7 日

使用步骤 2 中的公式,确定必须考虑匹配的子系统事务的日期范围。

  • 最小子系统日期必须等于或大于 2023 年 2 月 5 日(2023 日 2 月 7 日 - 2 天)
  • 最大子系统日期必须等于或小于 2023 年 2 月 7 日(2023 日 2 月 4 日 + 3 天)。

因此,在创建匹配时,会考虑 2023 年 2 月 5 日至 2023 年 2 月 7 日之间的所有子系统事务。在此示例中,所有子系统事务都在此范围内。

源系统中的金额合计为 2132。在子系统中,计算的日期范围内的事务的金额合计为 2132。因此,源系统和子系统事务被视为匹配。

要了解未创建匹配的示例,请考虑上面显示的相同源系统事务。在子系统事务中,唯一的变化是最后一个事务(金额 = 100)的日期为 2023 年 2 月 8 日。创建匹配时可以考虑的最大子系统日期是 2023 年 2 月 7 日,因此不会包括日期为 2023 年 2 月 8 日的事务。源系统中的金额合计为 2132,但是子系统中的金额合计为 2032。因此,这些源系统和子系统事务集是不匹配的。

注:

对于多对多规则,必须至少定义一个“完全匹配”条件。

评估平衡属性的匹配规则条件

对平衡属性的匹配规则条件进行评估的方法与其他属性的方法稍有不同。请考虑使用样本数据的一个多对多规则类型。下面是系统对此进行评估的方式:
  1. 系统将首先选择具有匹配发票编号的所有事务(规则 #1)。
  2. 然后将对日期属性进行评估,确定它们是否满足规则条件(规则 #2)。
  3. 最后,将评估源系统金额是否与子系统金额完全匹配(规则 #3)。

    因为这是一个在源系统和子系统中有多个事务的多对多匹配,因此将首先按数据源对金额值进行求和,然后对总和进行比较。

    在我们的示例中,源系统金额的和是 $500,子系统金额的和也是 $500,因此满足匹配条件:


    图中显示了与子系统金额匹配的源系统金额合计

注:

同样的流程还适用于 1 对多匹配和多对 1 匹配。只要一个匹配在同一数据源中存在多个事务,就必须首先对平衡属性的值进行求和,然后再进行比较。

评估设置为百分比的容差以及差异限制

百分比容差选项可用于数字整数类型的数据源属性(包括平衡属性),可针对以下内容进行设置:

  • 自动匹配规则
  • 手动匹配规则
  • 默认属性映射
我们来看一下匹配在容差高/低值为百分比时的工作原理。例如,假定存在以下情况:
  • 匹配规则包含 1% 低容差和 1% 高容差
  • “最多金额”的容差设置为 .5
源系统金额 子系统金额 计算出的容差 差异(源系统金额 - 子系统金额) 匹配计算 结果
99.6 100 1% × 99.6 = .99 99.6 - 100 = .4 .4 < .99 且 < .5 找到匹配项
99.1 100 1% × 99.1 = .99 99.1 - 100 = .9 .9 < .99 但 > .5 未找到匹配项,因为超过了容差差异上限
100 99.6 1% × 100 = 1 100 - 99.6 = .4 .4 < 1 且 < .5 找到匹配项
100 99.1 1% × 100 = 1 100 - 99.1 = .9 .9 < 1 且 > .5 未找到匹配项,因为超过了容差差异上限
50, 49.6 50, 50 1% × 99.6 = .99 99.6 - 100 = .4 .4 < .99 且 < .5 找到匹配项

评估 1 对 1 和 1 对多规则的日期容差

日期容差是在匹配两个数据源的事务时要考虑的天数。事务匹配以最常见的事务匹配方式考虑日期容差,将源(例如总帐)视为在银行存款或子系统事务“之前”可用。引擎锚定在“源”上,并根据在规则中输入的容差值,计算从“源”向前匹配时要考虑的日期值范围。

日期容差选项适用于日期类型的数据源属性,并可以设置用于:

  • 自动匹配规则
  • 手动匹配规则
  • 默认属性映射

日期容差非常灵活,您可以使用日期容差和以下项来指定匹配:

  • 天数范围

    使用规则中的日期容差设置在匹配时要考虑的天数范围。在创建规则时,这些字段标记为开始结束以指示范围。使用引擎可以非常灵活地处理日期容差范围。假设您要考虑匹配介于今天和明天之间的事务。开始日期将为 0,结束日期将为 1。另一个示例是开始匹配事务的时间早于源事务 2 天,结束匹配的时间晚于源事务 4 天。您还可以考虑 1 天之前(从 -1 开始)到 1 天之后的事务,即将“开始”值输入为 -1 并将“结束”值输入为 +1。

  • 特定日期

    您还可以提高日期容差精度,即将一个源的事务与子系统中另一特定日期(而不是日期范围)的事务进行匹配。要实现此目的,可以对“开始”和“结束”字段使用相同的日期容差值。例如,假设您只希望将源事务与 2 天之后的银行事务匹配。您可以在“开始”字段和“结束”字段中都输入 2,以便在匹配时仅考虑这一天的事务。

  • 业务日历(而非常规日历),以便在匹配时不考虑假日和周末。

    默认情况下,Account Reconciliation 使用常规日历指定日期范围形式的日期。在计算日期范围时,您还可以选择使用业务日历,以便在计算范围时轻松地排除公司假日或周末。在创建带容差的“日期类型”属性规则条件时,会提供使用业务日历复选框选项。该选项还可用于匹配流程的默认属性映射。业务日历选项不适用于手动匹配。

    注:

    要使用业务日历,必须指定组织单位的工作日,以及包含假日列表的假日规则。将组织单位分配给配置文件,然后在创建调节期间使用关联的业务日历。请参阅《设置和配置 Account Reconciliation》指南中的“定义组织单位”。

下面是一个指定了日期容差的规则示例,其中显示了业务日历复选框。
日期容差值和业务日历复选框的示例

有关在定义匹配流程时创建带日期容差的规则的更多详细信息,请参阅“通过创建规则来定义匹配流程