DUPLICATES 命令
概念信息
检测 Analytics 表中是否存在重复值或整个重复记录。
语法
DUPLICATES {<ON> 键域 <D> <...n>|<ON> ALL <EXCLUDE 文件名 <...n>>} <OTHER 域 <...n>|OTHER ALL <EXCLUDE 域名称 <...n>>> <UNFORMATTED> <ADDGROUP> <PRESORT> <IF 测试> <WHILE 测试> <FIRST 范围|NEXT 范围> <APPEND> <OPEN> <TO {SCREEN|表名称|文件名|PRINT}> <LOCAL> <HEADER 页眉文本> <FOOTER 页脚文本> <ISOLOCALE 区域设置代码>
参数
名称 | 描述 |
---|---|
ON 键域 D <...n> | ON ALL |
要测试是否存在重复值的一个或多个键域或者表达式。
|
EXCLUDE 域名称 可选 |
仅当使用 ON ALL 测试是否存在重复项时有效。 要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 ON ALL。 EXCLUDE 必须紧跟在 ON ALL 后面。例如: ON ALL EXCLUDE 域 1 域 2 |
OTHER 域 <...n> | OTHER ALL 可选 |
要包括在输出中的一个或多个其他域。
|
EXCLUDE 域名称 可选 |
仅在使用 OTHER ALL 时有效。 要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 OTHER ALL。 EXCLUDE 必须紧跟在 OTHER ALL 后面。例如: OTHER ALL EXCLUDE 域 1 域 2 |
UNFORMATTED 可选 |
在把结果输出至文件时消除页标题和分页符。 |
ADDGROUP 可选 |
在输出表中包括组号域 (GROUP_NUM)。 组号域向每个唯一的重复项组分配一个顺序递增的编号。 提示 当您分析输出表中的数据时,按编号引用重复项组的能力可能是有用的。 |
PRESORT 可选 |
在执行该命令之前,请按键域对该表进行排序。 说明 在 GROUP 命令内部不可使用 PRESORT。 |
IF 测试 可选 |
一个条件表达式,它必须为真以便处理每个记录。仅对满足条件的那些记录执行该命令。 说明 在应用任何范围参数(WHILE、FIRST、NEXT)之后,仅针对表中的剩余记录评估 IF 条件。 |
WHILE 测试 可选 |
一个条件表达式,它必须为真以便处理每个记录。该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。 说明 如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。 |
FIRST 范围 | NEXT 范围 可选 |
要处理的记录数:
请使用范围指定要处理的记录数。 如果您省略 FIRST 和 NEXT,则会默认处理所有记录。 |
APPEND 可选 |
将命令输出附加到现有文件的末尾,而不是覆盖现有文件。 说明 您必须确保命令输出的结构和现有文件完全相同:
Analytics 将输出附加到现有文件,而无论其结构如何。如果输出的结构和现有文件不匹配,则可能生成混乱的、不完整的或不准确的数据。 |
OPEN 可选 |
在命令执行后打开该命令创建的表。仅当该命令创建输出表时有效。 |
TO SCREEN | 表名称 | 文件名 | PRINT 可选 |
要将命令结果发送到的位置:
|
LOCAL 可选 |
请将输出文件保存在与 Analytics 项目相同的位置。 说明 仅当针对服务器表运行该命令并且输出文件为 Analytics 表时适用。 LOCAL 参数必须紧跟在 TO 参数后面。 |
HEADER 头文本 可选 |
要在报告的每个页面的顶部插入的文本。 必须将头文本指定为带引号的字符串。该值将覆盖 Analytics HEADER 系统变量。 |
FOOTER 尾文本 可选 |
要在报告的每个页面底部插入的文本。 必须将尾文本指定为带引号的字符串。该值将覆盖 Analytics FOOTER 系统变量。 |
ISOLOCALE 区域设置代码 可选 |
说明 仅在 Unicode 版 Analytics 中可用。 采用语言_国家/地区格式的系统区域设置。例如,要使用加拿大法语,请输入 fr-ca。 使用以下代码:
如果您不使用 ISOLOCALE,则会使用默认系统区域设置。 |
Analytics 输出变量
名称 | 包含 |
---|---|
GAPDUPn |
该命令识别出的间隔、重复或模糊重复组的总数。 |
示例
测试一个域中是否存在重复值
以下示例:
- 测试 Invoice_Number 域中是否存在重复值
- 将任何包含重复发票编号的记录输出至一个新的 Analytics 表
DUPLICATES ON Invoice_Number OTHER Vendor_Number Invoice_Date Invoice_Amount PRESORT TO "Duplicate_Invoices.FIL"
测试两个或更多个域的组合中是否存在重复值
以下示例:
- 测试 Invoice_Number 域和 Vendor_Number 域中是否存在重复值组合
- 将任何包含相同发票编号和相同供应商编号的记录输出至一个新的 Analytics 表
该测试和上一个测试之间的区别是来自两个不同供应商的完全相同发票编号不会被报告为误报。
DUPLICATES ON Invoice_Number Vendor_Number OTHER Invoice_Date Invoice_Amount PRESORT TO "Duplicate_Invoices.FIL"
测试是否存在重复记录
下列示例:
- 测试 Inventory 表的每个域中是否存在重复值
- 将任何完全相同的记录输出至一个新的 Analytics 表
DUPLICATES ON ProdNum ProdClass Location ProdDesc ProdStatus UnitCost CostDate SalePrice PriceDate PRESORT TO "Duplicate_Inventory_Items.FIL"
您可以通过使用 ALL 简化语法:
DUPLICATES ON ALL PRESORT TO "Duplicate_Inventory_Items.FIL"
按组号过滤重复项输出表
您组合使用多个键域来测试应付帐款表中是否存在重复记录:
- 供应商编号
- 发票编号
- 发票日期
- 发票金额
您想要过滤生成的重复项输出表,以便只有某些重复项组会接受附加的处理。
使用键域组合创建过滤器会很费力。例如:
SET FILTER TO ((Vendor_No = "11475") AND (Invoice_No = "8752512") AND (Invoice_Date = `20191021`) AND (Invoice_Amount = 7125.80)) OR ((Vendor_No = "12130") AND (Invoice_No = "589134") AND (Invoice_Date = `20191117`) AND (Invoice_Amount = 10531.71)) OR ((Vendor_No = "13440") AND (Invoice_No = "5518912") AND (Invoice_Date = `20191015`) AND (Invoice_Amount = 11068.20))
相反,基于组号创建过滤器可实现相同的结果:
SET FILTER TO MATCH(GROUP_NUM, 3 , 8, 11)
备注
有关此命令工作方式的详细信息,请参见测试重复。
排序和重复项
通常,您应该仅对排序的一个或多个键域运行重复项命令。键域中的重复值仅在相邻时才会被发现。
如果您对未排序的键域运行重复项命令,则不相邻的重复值不会被报告为重复项。如果存在相同重复值的两个或更多个聚类,则它们会被报告为重复项,但位于不同的组中。
根据您的分析目标的的不同,对非排序键域运行重复项命令可能是有意义的。例如,您可能想要仅查找那些在源表中紧密相邻的重复值,并且忽略非相邻重复值。