跳转至

3.5、关联

功能模块如图所示:

积木功能

关联

功能:该节点组合了两个表,类似于数据库中的联接。它将来自顶部输入端口的每一行与来自底部输入端口的每一行进行组合,这些行在选定的列中具有相同的值。

积木功能

配置界面功能说明:

配置-关联设置:

  • 关联列:从顶部输入(左表)和底部输入(右表)中选择用于连接的列。每对列定义了形式为A = B的等式约束。对于要连接的两行,来自左侧输入表的行在列A中的值必须与来自列B中的右侧输入表的行在列B中的值相同。行键值可以与行键值或常规列进行比较,在这种情况下,行键值将被解释为字符串值。
  • 匹配-全部关联条件:如果选中,则所有选中的要匹配的连接列中必须有两行一致。
  • 匹配-任意关联条件:如果选中,则两个行必须在至少一个要匹配的选定连接列中一致。
  • 关联列的值对比时:如果选择了“严格匹配值和类型”,只有当两行连接列的值和类型都一致时,两行才匹配,例如,int整型值不会匹配long型值。如果选择了“统一转化为字符串”,则按其long值表示(如果有的话)对单元格进行比较。例如,int整数单元格将匹配具有相等值的long单元格。如果选择了“数值类型自动兼容”,则在比较之前将连接列转换为字符串。
  • 输出结果-包含交集:如果选中该选项,则连接的行将包含在输出中。取消激活此选项可用于仅查找在另一个表中没有连接的行。
  • 输出结果-包含左表未关联:是否包括来自左表的行,而右表中的行在所选连接列中没有相同的值。例如,只包含匹配和未匹配的行对应于数据库术语中的左外连接。
  • 输出结果-包含右表未关联:是否从右输入表中包含不匹配的行。例如,只包含右表不匹配的行就相当于数据库术语中的右外连接。
  • 输出选项-将关联结果拆分为多个表:如果选中,该节点将产生三个输出表,而不是一个。顶部输出端口包含连接的行(仅匹配),中间输出端口包含来自左侧输入表的不匹配行,底部端口包含来自右侧输入表的不匹配行。注意,对于未被选择包含在输出中的连接结果类型(即匹配、左不匹配行、右不匹配行),将生成空表。
  • 输出选项-合并关联列:如果勾选,则右侧输入表的连接列将合并到左侧输入表的连接中。如果右表中的一个连接具有与左表相同的名称,则合并后的列的名称与左连接列相同。如果连接表具有不同的名称,则合并后的列以左列=右列的形式命名。
  • 输出选项-启用高亮:如果选中,则对输出中的行进行高亮显示,将对左右输入表中构成该行的行进行高亮显示。
  • 主键值设置:选择如何生成组合输出行的键。

配置-列过滤:

  • 列选择(顶部输入(左表)、底部选择(右表)):可以选择组合行中包含/排除的列。
  • 重复列名处理:如果列名同时出现在左输入表和右输入表中,该选项将配置如何处理列名冲突。

配置-优化:

  • 输出顺序-任意输出顺序:如果不需要对输出进行排序,则可以改进连接的执行时间。生成的顺序在联接器的任意两次执行之间都可能不同,并且取决于联接操作期间可用的主存的多少。
  • 输出顺序-先按左表中的行偏移量排序,再按右表:输出中的组合行根据贡献行的偏移量进行排序。考虑输出中的行R=(L1, R1),它分别结合了左输入表和右输入表中的行L1和行R1。如果在左表中,L1在L2之前,则R在另一行S=(L2, R2)之前。如果输出中的两行都涉及左表中的同一行,则它们将按照右相关行的顺序进行排序。如果在单个端口中输出结果,则首先输出匹配的行,然后输出左表中未匹配的行,最后输出右表中未匹配的行。
  • 其它设置:控制在连接操作和可能的后续排序操作期间可以创建的临时文件的数量。更多的临时文件可能会提高性能,但是操作系统可能会对打开文件的最大数量施加限制。