MERGE 命令

概念信息

合并表

将两个具有相同结构的已排序 Analytics 表中的记录组合为一个使用与原始表相同的排序顺序的新 Analytics 表。

语法

MERGE {{ON 键域|ON ALL <EXCLUDE 域名称 <...n>>}|{PKEY 主键域|PKEY ALL <EXCLUDE 域名称 <...n>>} {SKEY 辅助键域|SKEY ALL <EXCLUDE 域名称 <...n>>}} <IF 测试> TO 表名称 <LOCAL> <OPEN> <WHILE 测试> <FIRST 范围|NEXT 范围> <APPEND> <PRESORT> <ISOLOCALE 区域设置代码>

说明

只有字符域或字符计算域可在 MERGE 中用作键域。

主表和辅助表中的键域都必须按升序排序。如果一个或两个键域均未排序,或者按降序排序,则 MERGE 命令失败。

您可以使用 PRESORT 对主键域进行排序。如果辅助键域未排序,则必须首先在单独的排序操作中对其进行排序,然后才能执行合并。

主、辅助表可以进行索引而不是排序。对于大型表而言,索引而不是排序可能缩短合并表所需的时间。

参数

名称 描述
ON 键域 | ON ALL

说明

如果主表和辅助表中的相应键域具有相同的名称,则只能使用 ON。如果相应域具有不同的名称,或者如果它们是表达式而不是实际的物理域,您必须使用 PKEY 和 SKEY。

主表和辅助表中的一个或多个键域。

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

    域被按照您列出它们的顺序使用。

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

    域被按照它们出现在表布局中的顺序使用。

EXCLUDE 域名称

可选

仅在使用 ON ALL 合并时有效。

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

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

ON ALL EXCLUDE 域 1 域 2
PKEY 主键域 | PKEY ALL

主表中的一个或多个键域或表达式。

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

    域被按照您列出它们的顺序使用。

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

    域被按照它们出现在表布局中的顺序使用。

EXCLUDE 域名称

可选

仅在使用 PKEY ALL 合并时有效。

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

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

PKEY ALL EXCLUDE 域 1 域 2
SKEY 辅助键域 | SKEY ALL

辅助表中的一个或多个键域或表达式。

  • SKEY 辅助键域使用指定的一个或多个域

    域被按照您列出它们的顺序使用。

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

    域被按照它们出现在表布局中的顺序使用。

EXCLUDE 域名称

可选

仅在使用 SKEY ALL 合并时有效。

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

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

SKEY ALL EXCLUDE 域 1 域 2

IF 测试

可选

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

说明

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

TO 表名

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

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

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

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

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

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

    说明

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

LOCAL

可选

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

说明

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

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

OPEN

可选

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

WHILE 测试

可选

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

说明

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

FIRST 范围 | NEXT 范围

可选

要处理的记录数:

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

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

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

APPEND

可选

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

说明

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

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

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

PRESORT

可选

在执行该命令之前,请按主键域对主表进行排序。

说明

在 GROUP 命令内部不可使用 PRESORT。

省略 PRESORT:

  • 如果主键域已被排序
  • 如果您使用索引共同键域合并两个表

ISOLOCALE 区域设置代码

可选

说明

仅在 Unicode 版 Analytics 中可用。

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

使用以下代码:

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

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

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

示例

合并具有相同键域名称的表

以下示例合并两个具有相同键域名称的表:

OPEN 员工位置1 PRIMARY
OPEN 员工位置2 SECONDARY
MERGE ON 姓氏 TO "所有员工" PRESORT

合并具有不同键域名称的表

以下示例合并两个具有不同键域名称的表:

OPEN 员工位置1 PRIMARY
OPEN 员工位置2 SECONDARY
MERGE PKEY 姓氏 SKEY 姓 TO "所有员工" PRESORT

备注

有关此命令工作方式的详细信息,请参阅合并表

合并的备选方案

要正确执行合并可能很复杂。通过附加或者通过提取并附加然后排序,您可以得到相同的结果。

要了解更多信息,请参考APPEND 命令EXTRACT 命令

如果两个源表均已排序,则合并更为高效,并且可以更快地执行。