联接表

联接表使您可以将具有不同记录结构的两个 Analytics 表组合为第三个新表。您可以从两个原始表中选择要包括在新表中的任何域组合。

如果两个表包含一个或多个不同的域(数据元素),则记录结构会有所不同。联接是需要永久联接的数据集作为分析开始点的调查工作的理想选择。

示例

场景

您想要识别任何身兼员工身份的供应商,作为分析可能存在的不适当支付工资的相关数据的方式。

方法

您可以使用公共键域 Address 来联接 Vendor 主表和 Employee 表。

联接的输出表包含任何具有相同地址的供应商和员工。

说明

有关在数据导入流程中联接数据访问窗口中的表的信息,请参见在数据访问窗口中联接表

本主题涉及对 Analytics 中的 Analytics 表进行联接。

使用公共键域联接表

您使用公共键域 – 即同时出现在这两个表中的员工编号、供应商 ID 或地址等数据元素来联接表。如果在两个键域中存在相同的值,则结果是联接不同表中的各个记录的匹配。

在下面的示例中,一个供应商主表和一个员工主表被使用每个表中的地址域作为公共键(Vendor_StreetEmp_Address)加以联接。输出表包含两个联接的记录。在该示例中,每个表中的未联接记录也被包括在输出表中(这是一个您可以选择的做法)。

使用类似的或者几乎完全相同的键域值联接表

Analytics 模糊联接使用键域值的模糊匹配将两个 Analytics 表组合为第三个新表。在大多数方面,模糊联接类似于常规的 Analytics 联接。主要区别是除了基于键域值的精确匹配来联接记录以外,模糊联接还可以基于近似匹配来联接记录。

要了解更多信息,请参考模糊联接

键域要求

您要联接的表中的键域需要满足多个要求:

主表和辅助表及键域

在联接操作中的表和关键字域基于打开表的次序而被定为父项辅助项

  • 主表 您打开的第一个表
  • 主键域 您从主表中选择的键域
  • 辅助表 您打开的第二个表

    打开一个辅助表意味着将其与一个主表相关联,从而使其可供处理。辅助表不会在“视图”选项卡中打开。

  • 辅助键域 您从辅助表中选择的键域

您可以自由选择所需的主表和辅助表以及键域。然而,只有当键域满足键域要求时,联接才会成功。

要了解更多信息,请参考关于关键字域

匹配记录与不匹配记录

当您使用联接时,您需要同时考虑匹配的记录和不匹配的记录:

  • 匹配的记录如果主记录和辅助记录在主键域和辅助键域中有相同的值,则它们是匹配的。

    说明

    根据您选择的联接类型的不同,匹配辅助键值的重复实例可能不会被联接。要了解更多信息,请参考 为什么联接的输出表中缺少某些辅助表记录?

  • 不匹配的记录如果主记录和辅助记录在主键域和辅助键域中没有相同的值,则它们是不匹配的。

在联接表中包含哪些记录?

匹配的和不匹配的键域以及您执行的联接的类型决定了在新的联接表中包括两个原始表中的哪些记录。

联接类型

Analytics 支持如下所述的六种不同类型的联接。有关具体示例,请参见联接类型示例

联接类型 联接表中包含的记录
匹配的主记录 不匹配的主记录 匹配的辅助记录 不匹配的辅助记录

匹配的主记录和辅助记录

(第一个辅助匹配)

 

未包括:匹配辅助键值的重复实例

 

匹配的主记录和辅助记录

(所有辅助匹配)

 

已包括并联接:匹配辅助键值的重复实例

 

不匹配的主记录

 

 

 

所有主记录和匹配的辅助记录

未包括:匹配辅助键值的重复实例

 

所有辅助记录和匹配的主记录

 

已包括但未联接:匹配辅助键值的重复实例

已包括:不匹配辅助键值的重复实例

所有主记录和辅助记录

已包括但未联接:匹配辅助键值的重复实例

已包括:不匹配辅助键值的重复实例

为什么联接的输出表中缺少某些辅助表记录?

在六个 Analytics 联接类型中,有五个类型不联接匹配辅助键值的重复实例。匹配主键值的重复实例被联接,但它们都被联接到匹配辅助键值的第一个实例。这些联接类型被广泛称为多对一联接。

要联接所有匹配辅助键值,请执行下列操作之一:

  • 颠倒表的顺序 在联接中,颠倒主表和辅助表的顺序。如果原始主表中的键域中的值是唯一的,则此方法是适当的。如果在这两个表中都有主键值的重复实例,则此方法可能不会生成您需要的结果。
  • 使用多对多联接 使用匹配的主记录和辅助记录(所有辅助匹配)联接类型。

多对一联接和多对多联接

您可能看到 Analytics 联接被称作多对一联接,而六个联接类型之一被称作多对多联接。这些术语可以成为一种粗略地描述 Analytics 联接行为的方式。但是,这些术语只是一种概括,而没有完全代表联接行为。

Analytics 多对一联接

有一个例外,Analytics 中可供您使用的联接类型为多对一联接。如果主键域中的所有值都是唯一的,那么它们就简化为一对一联接。

Analytics 多对多联接

一个 Analytics 联接类型 – 匹配的主记录和辅助记录(所有辅助匹配)– 包括所有匹配主记录和辅助记录。此联接类型也称为多对多联接。

如果主键域中的所有值都是唯一的,那么该多对多联接就简化为一对多联接。

Analytics 联接与 SQL 联接的区别

在您使用联接对话框执行的 Analytics 联接和在使用数据访问窗口将数据导入到 Analytics 时可用的 SQL 联接之间有一项重要差异:

  • Analytics 联接 重复的辅助键匹配值不会被联接(多对多联接例外)
  • SQL 联接重复的辅助键匹配值都被联接,而无论您选择的联接类型是什么

    有关数据访问窗口中的 SQL 联接的详细信息,请参见在数据访问窗口中联接表

说明

Analytics 以 Analytics 独有的方式使用术语“多对多联接”。它与 SQL 多对多联接不同。

联接表的排序

通过联接所得的组合表在主关键字域上以升序排序,前提是您在执行联接时对主关键字域进行预排序,或者主表已使用该排序顺序。

如果您不通过主关键字域进行排序或预排序,所得联接表会使用主表的现有排序顺序。

有关排序和联接的其他信息

  • 并非必须对主表进行排序,但是如果完全不对主表进行排序,或者按降序对其进行排序,则会大幅度增加处理时间。
  • 如果使用部分排序的主表关键字域(例如在表按月排序然后按帐户代码排序时通过帐户代码联接)执行联接,则处理时间的增加幅度不会太明显。
  • 在联接时,预排序选项同时对主表和辅助表可用。
  • 主、辅助关键字域可以进行索引而不是排序。必须按升序对辅助关键字域进行索引。只能从命令行或在脚本中向辅助表应用索引。

其他有关联接的信息

下表提供有关联接的附加信息。

 

功能区域

详情

不匹配记录以及缺失域值

如果在联接中对缺失的域值纳入不匹配的主记录或不匹配的辅助记录,Analytics 会在字符和日期时间域中显示空白,在数值域中显示零,并在逻辑域中显示“F”。

辅助表关键字域中的重复值或空白

如果辅助表关键字域中的重复值或缺失值在随后的分析中无效,在某些情况下预处理辅助表来删除重复值和/或空白可解决该问题。

部分匹配

键域值的部分匹配不受支持。要实现匹配,值必须 100% 相同。

例如:

  • 匹配 AB-123、AB-123
  • 不匹配 AB-123、123

说明

Analytics 模糊联接 支持不完全匹配。

未强制要求关键字域长度相同

除了字符关键字域外,Analytics 未强制要求在联接表时主关键字域和辅助关键字域的长度要一致。

建议对数值键域始终使用一致的长度,如果需要,请在执行联接前手动协调长度。使用不同长度的数值关键字域得到的联接结果不可靠。

当执行涉及日期、日期时间、或时间的操作时,因为 Analytics 使用内部的 Analytics 日期时间格式,日期时间关键字域长度可能不同。

调整对齐方式和大小写

在使用字符关键字域联接表格时,对齐方式和大小写必须一致:

  • 两种关键字域必须具有相同对齐方式: 使用 LTRIM( ) 函数从关键字域删除前导空格。

  • 两种关键字域的大小写必须相同,可为大写、小写或首字母大写。要调整大小写,可使用 UPPER( )、LOWER( ) 或 PROPER( ) 函数。

在联接中未纳入记录数

根据所执行的联接类型的不同,主要表和/或辅助表中的记录可能不会被包括在联接表中。命令日志会显示未纳入的主记录数(忽略了 <n> 个记录),而不是显示忽略的辅助记录数。

联接操作中使用的条件表达式和范围选项

在多对一联接中,如果(If)、当(While)、前(First) 和 后(Next) 等限制处理哪些记录的参数,仅用于主表。在多对多联接中,如果(If)、当(While) 表达式也可引用辅助表。

正在联接的表中存在相同域名

如果主关键字域和辅助关键字域或其他任何涉及的域有一致的名称,Analytics 会在输出表的布局中将“2”添加至辅助域名的末尾。例如“供应商标识”变为“供应商标识2”(或变为“供应商标识3”,以此类推,直到 Analytics 找到不和输出表中其他任意域冲突的名称)。

输出表视图中备选列标题继续显示未经改动的相同名称。

不可用作辅助表的表

如果某个表当前作为子表和主表/父表相关,则不可在联接中将该表选择为辅助表。为了避免这种限制,可创建主表/父表布局或子表布局的副本,然后使用复制的布局联接,或者可删除关联。

正在联接的表的位置限制

要进行联接,表必须处于同一 Analytics 项目中。服务器表必须位于同一服务器上,并且必须使用相同的服务器配置文件进行访问。不能将本地表与服务器表联接。

联接的表的大小

根据执行的联接类型,最后得到的组合的表中的记录数可以大于、等于或小于接受联接的两个表中的记录总和。

连接基于 UTC 和非 UTC 的数据

基于 UTC 和非 UTC 的键域可用于连接两个表。(UTC 是通用协调时间,经度零度时间)。执行包含日期时间或时间操作时,Analytics 使用内部 Analytics 日期时间格式,这样会将随后的两个日期时间解释为相同的,并组成一个匹配:

  • 基于 UTC – 31/12/2014 10:30:15-05:00

  • 非 UTC – 31/12/2014 15:30:15

如果您在 Analytics 操作中混合了 UTC 和非 UTC 时间数据,您应该保持谨慎。尽管 Analytics 会匹配以上的两个时间值,这样做可能没有逻辑意义,因为一个值会引用一个时区,而其他值不会。要了解 UTC 相关的更多信息,请参阅 “日期和时间”选项卡(“选项”对话框)

Analytics 14.1 帮助