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

要测试是否存在重复值的一个或多个键域或者表达式。

  • ON 键域使用指定的一个或多个域

    如果您按一个以上的域进行测试,则被标识为重复值的记录需要在每个指定的域中有完全相同的值。

    这些域被按照您列出它们的顺序包括在输出结果中。

    包括 D 可按降序对键域进行排序。默认的排序顺序为升序。

  • ON ALL 使用该表中的所有域

    如果您按表中的所有域进行测试,则被标识为重复值的记录必须完全相同。

    这些域被按照它们出现在表布局中的顺序包括在输出结果中。

    升序排序顺序是 ON ALL 的唯一选项。

    说明

    记录的未定义部分不会被测试。

EXCLUDE 域名称

可选

仅当使用 ON ALL 测试是否存在重复项时有效。

要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 ON ALL。

EXCLUDE 必须紧跟在 ON ALL 后面。例如:

ON ALL EXCLUDE 域 1 域 2
OTHER 域 <...n> | OTHER ALL

可选

要包括在输出中的一个或多个其他域。

  • 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 从当前选定的记录开始处理,直到达到指定的记录数为止

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

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

APPEND

可选

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

说明

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

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

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

OPEN

可选

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

TO SCREEN | 表名称 | 文件名 | PRINT

可选

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

  • 屏幕 – 在 Analytics 显示区域中显示结果

    提示

    您可以单击显示区域中的任何链接结果值以向下追溯到源表中的关联记录。

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

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

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

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

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

    说明

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

  • 文件名将结果保存至文件

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

    默认情况下,该文件被保存到包含 Analytics 项目的文件夹。

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

    • TO "C:\Output.TXT"
    • TO "Results\Output.TXT"
  • PRINT 将结果发送到默认打印机

LOCAL

可选

请将输出文件保存在与 Analytics 项目相同的位置。

说明

仅当针对服务器表运行该命令并且输出文件为 Analytics 表时适用。

LOCAL 参数必须紧跟在 TO 参数后面。

HEADER 头文本

可选

要在报告的每个页面的顶部插入的文本。

必须将头文本指定为带引号的字符串。该值将覆盖 Analytics HEADER 系统变量。

FOOTER 尾文本

可选

要在报告的每个页面底部插入的文本。

必须将尾文本指定为带引号的字符串。该值将覆盖 Analytics FOOTER 系统变量。

ISOLOCALE 区域设置代码

可选

说明

仅在 Unicode 版 Analytics 中可用。

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

使用以下代码:

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

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

如果您不使用 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)

备注

有关此命令工作方式的详细信息,请参见测试重复

排序和重复项

通常,您应该仅对排序的一个或多个键域运行重复项命令。键域中的重复值仅在相邻时才会被发现。

如果您对未排序的键域运行重复项命令,则不相邻的重复值不会被报告为重复项。如果存在相同重复值的两个或更多个聚类,则它们会被报告为重复项,但位于不同的组中。

根据您的分析目标的的不同,对非排序键域运行重复项命令可能是有意义的。例如,您可能想要仅查找那些在源表中紧密相邻的重复值,并且忽略非相邻重复值。