FUZZYJOIN 命令

使用模糊匹配将来自两个 Analytics 表的域合并为单个新的 Analytics 表。

说明

要检测单个字符域内几乎完全相同的值(模糊重复),请参见FUZZYDUP 命令

有关在使用精确匹配键域值联接表时的各种选项,请参见JOIN 命令

语法

FUZZYJOIN {DICE PERCENT 百分比 NGRAM n 元语法长度|LEVDISTANCE DISTANCE } PKEY 主键域 SKEY 辅助键域 {FIELDS 主域|FIELDS ALL} <WITH 辅助域 |WITH ALL> <IF 测试> <OPEN> <FIRSTMATCH> TO 表名称 <WHILE 测试> <FIRST 范围|NEXT 范围> <APPEND>

说明

您不能在本地针对服务器表运行 FUZZYJOIN命令。

您必须完整指定 FUZZYJOIN 命令名称。 您不能缩略它。

参数

名称 描述
DICE PERCENT 百分比 NGRAM n 元语法长度 | LEVDISTANCE DISTANCE

要使用的模糊匹配算法。

DICE 使用 Dice 系数算法

  • PERCENT 百分比两个字符串要成为模糊匹配所允许的最小 Dice 系数

    请指定一个从 0.0000 到 1.0000 的小数部分(例如,0.7500)。 请最多使用四个小数位。

    减小该值时,可通过包括具有更高模糊度即彼此差异更大的字符串来增加匹配的数量。

  • NGRAM n 元语法长度 要使用的 n 元语法长度

    请指定一个整数(1 或更大)。

    增加 n 元语法长度可使两个字符串的相似性标准更加严格。

    N 元语法是在 Dice 系数计算过程中,将比较字符串划分而成的重叠子串(字符块)。

    说明

    当您指定 DICE 时,FUZZYJOIN 命令在 IF 语句中使用 DICECOEFFICIENT( ) 函数以有条件地联接键域值。 有关该函数的详细信息,请参见DICECOEFFICIENT( ) 函数

LEVDISTANCE 使用编辑距离算法

  • DISTANCE 两个字符串要成为模糊匹配所允许具有的最大编辑距离

    请指定一个整数(1 或更大)。

    增大该值时,可通过包括具有更高模糊度即彼此差异更大的字符串来增加匹配的数量。

    说明

    当您指定 LEVDISTANCE 时,FUZZYJOIN 命令在 IF 语句中使用 LEVDIST( ) 函数以有条件地联接键域值。 有关该函数的详细信息,请参见LEVDIST( ) 函数

    与该函数不同的是,FUZZYJOIN 命令中的编辑距离算法自动除去前导和后继空白,并且不区分大小写。

PKEY 主键域

主表中的字符键域或表达式。

您只能指定一个主键域。

SKEY 辅助键域

辅助表中的字符键域或表达式。

您只能指定一个辅助键域。

FIELDS 主域 | FIELDS ALL

要在联接输出表中包括的来自主表的域或表达式。

  • 主域包括指定的一个或多个域
  • ALL 包括该表中的所有域

说明

如果您想要将主键域包括在联接表中,则必须明确指定它。 指定 ALL 也会包括它。

WITH 辅助域 | WITH ALL

可选

要在联接输出表中包括的来自辅助表的域或表达式。

  • 辅助域包括指定的一个或多个域
  • ALL 包括该表中的所有域

说明

如果您想要将辅助键域包括在联接表中,则必须明确指定它。 指定 ALL 也会包括它。

IF 测试

可选

一个条件表达式,它必须为真以便处理每个记录。 仅对满足条件的那些记录执行该命令。

说明

在应用任何范围参数(WHILE、FIRST、NEXT)之后,仅针对表中的剩余记录评估 IF 条件。

说明

IF 条件可以引用主表、辅助表或者两者。

OPEN

可选

在命令执行后打开该命令创建的表。 仅当该命令创建输出表时有效。

FIRSTMATCH

可选

请指定每个主键值仅被联接到任何辅助键匹配的第一个实例。

如果第一个实例恰好是精确匹配,则主键值的任何后续模糊匹配都不会被包括在联接输出表中。

如果您省略 FIRSTMATCH,则 FUZZYJOIN 的默认行为是将每个主键值联接到任何辅助键匹配的所有实例。

如果您只想知道两个表之间是否存在匹配(精确或模糊),并且您想要减少识别所有匹配所需的处理时间,则 FIRSTMATCH 是有用的。

如果您确信对于每个主键值,在辅助表中最多只存在一个匹配,您还可以使用 FIRSTMATCH。

说明

FIRSTMATCH 仅可作为 ACLScript 参数。 该选项在 Analytics 用户界面中不可用。

TO 表名

要将命令结果发送到的位置:

  • 表名将结果保存到一个 Analytics 表

    请将表名指定为具有 .FIL 文件扩展名的带引号的字符串。 例如:TO "Output.FIL"

    默认情况下,表数据文件 (.FIL) 被保存到包含 Analytics 项目的文件夹。

    请使用绝对或相对文件路径将该数据文件保存到另外的现有文件夹:

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    说明

    表名称被限制为不超过 64 个字母数字字符(不包括 .FIL 扩展名)。 该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。 该名称不能以数字开头。

WHILE 测试

可选

一个条件表达式,它必须为真以便处理每个记录。 该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。

说明

如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。

FIRST 范围 | NEXT 范围

可选

要处理的记录数:

  • FIRST 从第一个记录开始处理,直到达到指定的记录数为止
  • NEXT 从当前选定的记录开始处理,直到达到指定的记录数为止

请使用范围指定要处理的记录数。

如果您省略 FIRST 和 NEXT,则会默认处理所有记录。

APPEND

可选

将命令输出附加到现有文件的末尾,而不是覆盖现有文件。

说明

您必须确保命令输出的结构和现有文件完全相同:

  • 相同的域
  • 相同的域顺序
  • 匹配的域具有相同的长度
  • 匹配的域具有相同的数据类型

Analytics 将输出附加到现有文件,而无论其结构如何。 如果输出的结构和现有文件不匹配,则可能生成混乱的、不完整的或不准确的数据。

ISOLOCALE 区域设置代码

可选

说明

仅在 Unicode 版 Analytics 中可用。

采用语言_国家/地区格式的系统区域设置。 例如,要使用加拿大法语,请输入 fr-ca

使用以下代码:

  • 语言 ISO 639 标准语言代码
  • 国家/地区 ISO 3166 标准国家/地区代码

    如果您未指定国家/地区代码,则使用该语言的默认国家/地区。

如果您不使用 ISOLOCALE,则会使用默认系统区域设置。

示例

使用模糊匹配联接两个表,以便发现可能还是供应商的员工

下面的示例使用地址作为公共键域(Address 域和 Vendor_Street 域)联接 Empmast 表和 Vendor 表。

FUZZYJOIN 命令创建一个包含精确匹配或者模糊匹配主记录和辅助记录的新表。 结果是任何具有相同地址或者类似地址的员工和供应商的列表。

使用 Dice 系数算法执行模糊联接

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN DICE PERCENT 0.8000 NGRAM 2 PKEY Address SKEY Vendor_Street FIELDS Employee_Number First_Name Last_Name Address WITH Vendor_Number Vendor_Name Vendor_Street OPEN TO "Employee_Vendor_Match"

使用编辑距离算法执行模糊联接

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Address SKEY Vendor_Street FIELDS Employee_Number First_Name Last_Name Address WITH Vendor_Number Vendor_Name Vendor_Street OPEN TO "Employee_Vendor_Match"

包括所有域

此版本的 FUZZYJOIN 命令在联接输出表中包括主表和辅助表中的所有域。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Address SKEY Vendor_Street FIELDS ALL WITH ALL OPEN TO "Employee_Vendor_Match"

备注

说明

有关此命令工作原理的详细信息,请参见 Analytics 帮助

区分大小写

FUZZYJOIN 命令不区分大小写,而无论您使用哪种模糊匹配算法。 因此,"SMITH" 等效于 "smith".

前导和后继空白

FUZZYJOIN 命令自动除去域中的前导和后继空白,而无论您使用哪种模糊匹配算法。 指定主键域和辅助键域时,无须使用 TRIM( ) 或 ALLTRIM( ) 函数。