联接表
联接表使您可以将具有不同记录结构的两个 Analytics 表组合为第三个新表。您可以从两个原始表中选择要包括在新表中的任何域组合。
如果两个表包含一个或多个不同的域(数据元素),则记录结构会有所不同。联接是需要永久联接的数据集作为分析开始点的调查工作的理想选择。
示例
场景
您想要识别任何身兼员工身份的供应商,作为分析可能存在的不适当支付工资的相关数据的方式。
方法
您可以使用公共键域 Address 来联接 Vendor 主表和 Employee 表。
联接的输出表包含任何具有相同地址的供应商和员工。
使用公共键域联接表
您使用公共键域 – 即同时出现在这两个表中的员工编号、供应商 ID 或地址等数据元素来联接表。如果在两个键域中存在相同的值,则结果是联接不同表中的各个记录的匹配。
在下面的示例中,一个供应商主表和一个员工主表被使用每个表中的地址域作为公共键(Vendor_Street 和 Emp_Address)加以联接。输出表包含两个联接的记录。在该示例中,每个表中的未联接记录也被包括在输出表中(这是一个您可以选择的做法)。
使用类似的或者几乎完全相同的键域值联接表
Analytics 模糊联接使用键域值的模糊匹配将两个 Analytics 表组合为第三个新表。在大多数方面,模糊联接类似于常规的 Analytics 联接。主要区别是除了基于键域值的精确匹配来联接记录以外,模糊联接还可以基于近似匹配来联接记录。
要了解更多信息,请参考模糊联接。
键域要求
您要联接的表中的键域需要满足多个要求:
键域特征 | 要求 |
---|---|
数据元素 | 必须相同。例如,两个键域都是员工编号域。 |
数据类型 |
可为任何数据类型,但键域的数据类型必须彼此相同。例如,两个字符域。 例外是字符-数值和数值-字符数据类型联接,Analytics 会自动协调这些数据类型。要了解更多信息,请参考联接表时自动调整。 日期时间子类型(日期、日期时间和事件)仅可用于连接到相同的子类型。 |
字段类型 | 可以是物理域或计算域。 |
域名称 | 可以不同。 |
开始位置 | 可以不同。 |
域长度 |
|
字符域中的对齐方式和大小写 | 必须相同。 |
主表和辅助表及键域
在联接操作中的表和关键字域基于打开表的次序而被定为父项和辅助项:
- 主表 您打开的第一个表
- 主键域 您从主表中选择的键域
- 辅助表 您打开的第二个表
打开一个辅助表意味着将其与一个主表相关联,从而使其可供处理。辅助表不会在“视图”选项卡中打开。
- 辅助键域 您从辅助表中选择的键域
您可以自由选择所需的主表和辅助表以及键域。然而,只有当键域满足键域要求时,联接才会成功。
要了解更多信息,请参考关于关键字域。
匹配记录与不匹配记录
当您使用联接时,您需要同时考虑匹配的记录和不匹配的记录:
- 匹配的记录如果主记录和辅助记录在主键域和辅助键域中有相同的值,则它们是匹配的。
说明
根据您选择的联接类型的不同,匹配辅助键值的重复实例可能不会被联接。要了解更多信息,请参考 为什么联接的输出表中缺少某些辅助表记录?
- 不匹配的记录如果主记录和辅助记录在主键域和辅助键域中没有相同的值,则它们是不匹配的。
在联接表中包含哪些记录?
匹配的和不匹配的键域以及您执行的联接的类型决定了在新的联接表中包括两个原始表中的哪些记录。
联接类型
Analytics 支持如下所述的六种不同类型的联接。有关具体示例,请参见联接类型示例。
联接类型 | 联接表中包含的记录 | |||
---|---|---|---|---|
匹配的主记录 | 不匹配的主记录 | 匹配的辅助记录 | 不匹配的辅助记录 | |
匹配的主记录和辅助记录 (第一个辅助匹配)
|
|
|
未包括:匹配辅助键值的重复实例 |
|
匹配的主记录和辅助记录 (所有辅助匹配)
|
|
|
已包括并联接:匹配辅助键值的重复实例 |
|
不匹配的主记录
|
|
|
|
|
所有主记录和匹配的辅助记录
|
|
|
未包括:匹配辅助键值的重复实例 |
|
所有辅助记录和匹配的主记录
|
|
|
已包括但未联接:匹配辅助键值的重复实例 |
已包括:不匹配辅助键值的重复实例 |
所有主记录和辅助记录
|
|
|
已包括但未联接:匹配辅助键值的重复实例 |
已包括:不匹配辅助键值的重复实例 |
为什么联接的输出表中缺少某些辅助表记录?
在六个 Analytics 联接类型中,有五个类型不联接匹配辅助键值的重复实例。匹配主键值的重复实例被联接,但它们都被联接到匹配辅助键值的第一个实例。这些联接类型被广泛称为多对一联接。
要联接所有匹配辅助键值,请执行下列操作之一:
- 颠倒表的顺序 在联接中,颠倒主表和辅助表的顺序。如果原始主表中的键域中的值是唯一的,则此方法是适当的。如果在这两个表中都有主键值的重复实例,则此方法可能不会生成您需要的结果。
- 使用多对多联接 使用匹配的主记录和辅助记录(所有辅助匹配)联接类型。
多对一联接和多对多联接
您可能看到 Analytics 联接被称作多对一联接,而六个联接类型之一被称作多对多联接。这些术语可以成为一种粗略地描述 Analytics 联接行为的方式。但是,这些术语只是一种概括,而没有完全代表联接行为。
Analytics 多对一联接
有一个例外,Analytics 中可供您使用的联接类型为多对一联接。如果主键域中的所有值都是唯一的,那么它们就简化为一对一联接。
在 Analytics 多对一联接中:
- 已联接 匹配主键值的重复实例都被联接到匹配辅助键值的第一个实例
重复的主键匹配和第一个辅助键匹配都被包括在联接表中。
- 未联接 匹配辅助键值的重复实例不被联接
重复的辅助键匹配被从联接的输出表中排除,除非您选择一个包括所有辅助记录的联接类型。如果您包括所有辅助记录,则重复的辅助键匹配会作为未联接的记录出现在联接的输出表中。
多对一联接
在下面的示例中,主键值 'C' 的两个实例都被在输出表中联接,而对于辅助键值 'C' 而言,只有第一个实例被联接。
提示
如果键域值在您要联接的表之一中是唯一的,请使该表成为辅助表。例如,如果您要将一个交易表与一个主表相联接,请使该主表成为辅助表。
以此方式构建联接可确保所有匹配记录被联接并包括在输出表中。
Analytics 多对多联接
一个 Analytics 联接类型 – 匹配的主记录和辅助记录(所有辅助匹配)– 包括所有匹配主记录和辅助记录。此联接类型也称为多对多联接。
如果主键域中的所有值都是唯一的,那么该多对多联接就简化为一对多联接。
在 Analytics 多对多联接中:
- 已联接 匹配主键值的所有实例都被联接到匹配辅助键值的所有实例
重复的主键匹配和重复的辅助键匹配都被联接并包括在输出表中。
- 未联接 匹配辅助键值的重复实例都被联接
多对多联接
在下面的示例中,主键值 'C' 的两个实例都被在输出表中联接,并且辅助键值 'C' 的两个实例也都被联接。
提示
如果您不确定辅助键中是否存在重复匹配,请选择多对多联接类型。它可确保您不会排除任何应该被联接的记录。
如果您有意排除重复的辅助键匹配,请勿选择多对多联接类型。
Analytics 联接与 SQL 联接的区别
在您使用联接对话框执行的 Analytics 联接和在使用数据访问窗口将数据导入到 Analytics 时可用的 SQL 联接之间有一项重要差异:
- Analytics 联接 重复的辅助键匹配值不会被联接(多对多联接例外)
- SQL 联接重复的辅助键匹配值都被联接,而无论您选择的联接类型是什么
有关数据访问窗口中的 SQL 联接的详细信息,请参见在数据访问窗口中联接表。
说明
Analytics 以 Analytics 独有的方式使用术语“多对多联接”。它与 SQL 多对多联接不同。
联接表的排序
通过联接所得的组合表在主关键字域上以升序排序,前提是您在执行联接时对主关键字域进行预排序,或者主表已使用该排序顺序。
如果您不通过主关键字域进行排序或预排序,所得联接表会使用主表的现有排序顺序。
有关排序和联接的其他信息
- 并非必须对主表进行排序,但是如果完全不对主表进行排序,或者按降序对其进行排序,则会大幅度增加处理时间。
- 如果使用部分排序的主表关键字域(例如在表按月排序然后按帐户代码排序时通过帐户代码联接)执行联接,则处理时间的增加幅度不会太明显。
- 在联接时,预排序选项同时对主表和辅助表可用。
- 主、辅助关键字域可以进行索引而不是排序。必须按升序对辅助关键字域进行索引。只能从命令行或在脚本中向辅助表应用索引。
其他有关联接的信息
下表提供有关联接的附加信息。
功能区域 |
详情 |
---|---|
不匹配记录以及缺失域值 |
如果在联接中对缺失的域值纳入不匹配的主记录或不匹配的辅助记录,Analytics 会在字符和日期时间域中显示空白,在数值域中显示零,并在逻辑域中显示“F”。 |
辅助表关键字域中的重复值或空白 |
如果辅助表关键字域中的重复值或缺失值在随后的分析中无效,在某些情况下预处理辅助表来删除重复值和/或空白可解决该问题。 |
部分匹配 |
键域值的部分匹配不受支持。要实现匹配,值必须 100% 相同。 例如:
说明 Analytics 模糊联接 支持不完全匹配。 |
未强制要求关键字域长度相同 |
除了字符关键字域外,Analytics 未强制要求在联接表时主关键字域和辅助关键字域的长度要一致。 建议对数值键域始终使用一致的长度,如果需要,请在执行联接前手动协调长度。使用不同长度的数值关键字域得到的联接结果不可靠。 当执行涉及日期、日期时间、或时间的操作时,因为 Analytics 使用内部的 Analytics 日期时间格式,日期时间关键字域长度可能不同。 |
调整对齐方式和大小写 |
在使用字符关键字域联接表格时,对齐方式和大小写必须一致:
|
在联接中未纳入记录数 |
根据所执行的联接类型的不同,主要表和/或辅助表中的记录可能不会被包括在联接表中。命令日志会显示未纳入的主记录数(忽略了 <n> 个记录),而不是显示忽略的辅助记录数。 |
联接操作中使用的条件表达式和范围选项 |
在多对一联接中,如果(If)、当(While)、前(First) 和 后(Next) 等限制处理哪些记录的参数,仅用于主表。在多对多联接中,如果(If)、当(While) 表达式也可引用辅助表。 |
正在联接的表中存在相同域名 |
如果主关键字域和辅助关键字域或其他任何涉及的域有一致的名称,Analytics 会在输出表的布局中将“2”添加至辅助域名的末尾。例如“供应商标识”变为“供应商标识2”(或变为“供应商标识3”,以此类推,直到 Analytics 找到不和输出表中其他任意域冲突的名称)。 输出表视图中备选列标题继续显示未经改动的相同名称。 |
不可用作辅助表的表 |
如果某个表当前作为子表和主表/父表相关,则不可在联接中将该表选择为辅助表。为了避免这种限制,可创建主表/父表布局或子表布局的副本,然后使用复制的布局联接,或者可删除关联。 |
正在联接的表的位置限制 |
要进行联接,表必须处于同一 Analytics 项目中。服务器表必须位于同一服务器上,并且必须使用相同的服务器配置文件进行访问。不能将本地表与服务器表联接。 |
联接的表的大小 |
根据执行的联接类型,最后得到的组合的表中的记录数可以大于、等于或小于接受联接的两个表中的记录总和。 |
连接基于 UTC 和非 UTC 的数据 |
基于 UTC 和非 UTC 的键域可用于连接两个表。(UTC 是通用协调时间,经度零度时间)。执行包含日期时间或时间操作时,Analytics 使用内部 Analytics 日期时间格式,这样会将随后的两个日期时间解释为相同的,并组成一个匹配:
如果您在 Analytics 操作中混合了 UTC 和非 UTC 时间数据,您应该保持谨慎。尽管 Analytics 会匹配以上的两个时间值,这样做可能没有逻辑意义,因为一个值会引用一个时区,而其他值不会。要了解 UTC 相关的更多信息,请参阅 “日期和时间”选项卡(“选项”对话框)。 |