FeatureJoiner
通过结合基于公共键属性值的属性和/或几何特性来连接特性。执行左、内和全连接。
典型的使用
- 在特性之间执行简单的连接,使用属性值作为键
它是如何工作的?
FeatureJoiner执行简单的连接操作,很像SQL连接,不需要了解SQL查询构造。
它有两个输入端口-左和正确的-将两个要连接的功能流路由到转换器。选择一个或多个属性进行联接。
当表上联接中指定的每一对键都具有相同的值时,左特性与右特性匹配。当匹配发生时,来自左右特征的属性/几何图形被合并,合并后的特征被输出到加入端口。
连接模式
连接模式参数定义要执行的连接的类型,确定将通过加入输出端口。
连接模式 |
联合输出 |
|
---|---|---|
内部 |
|
|
左 |
|
|
满的 |
|
加入行为
每当通过键将左特征与右特征匹配时,就会产生一个连接的特征。产生的输出特性的数量取决于多个左右特性是否匹配。
连接的类型由使用的数据的性质决定(它不是参数)。连接的任何类型都可以由连接模式(内,左,或满)。
基数 |
说明 |
输出(假设1个键值) |
---|---|---|
1比1 | 一对一:如果每个左特征在右特征之间有一个匹配项(例如,通过唯一的地址ID键将单点特征映射到地址表),则这是1:1匹配,并生成一个连接的特征。 | 1左边的火柴1正确的: 1联接特征输出 |
1点 | 一对多:如果每个左特征在右特征之间有多个匹配(例如,一个地址记录映射到该地址的计划应用程序列表),则这是1:M(一对多)匹配,并为发生的每个匹配生成一个连接的特征。 | 1左边的火柴10正确的: 10联接特征输出 |
男:1 | 多对一:如果多个左特征与一个右特征记录匹配(例如,多个地址通过邮政编码字段与同一人口普查数据匹配),则这是M:1(多对一)匹配,并为每次匹配生成一个连接的特征 | 10左匹配1正确的: 10联接特征输出 |
M:N | 许多许多:如果多个左特征与多个右特征匹配(例如,多个地址与多个停电记录匹配),则这是M:N(多对多)匹配,并为每次匹配生成一个关联特征。 | 10左匹配10正确的: One hundred.加入特性输出* *当所有的功能都有相同的键值-所有左匹配。 |
无与伦比的特性
属性处理未找到匹配项的特性(包括左和右)连接模式(内,左,或满)。左模式和全模式都将导致一些或所有不匹配的功能通过连接端口输出,这取决于模式:
连接模式 |
不匹配的左特征输出 |
不匹配的功能输出 |
---|---|---|
内部 | 未连接的左 | 不结合的权利 |
左 | 加入 | 不结合的权利 |
满的 | 加入 | 加入 |
在本例中,我们有一个小的Fire Halls数据集,它有一个街道地址,但是没有完整的邮政地址。FeatureJoiner将执行到地址数据集的连接,并将这些属性合并到Fire Halls。
消防大厅与左的PostalAddress数据集正确的。
在参数对话框中,连接模式被设置为内部。这将只输出找到匹配的特性。未使用的地址将不会包含在联合功能输出中,也不会包含任何找不到匹配的邮政地址的Fire Halls。
在Join On表中,我们为左右两个特性选择适当的街道地址属性,这些值将用作连接的键。
查看结果加入输出端口,您可以看到来自邮政地址特性的属性已经添加到FIre Halls。
使用笔记
- FeatureJoiner与FeatureMerger:
- 如果连接要求很简单,FeatureJoiner应该提供更好的性能。
- 如果连接需求更复杂,例如构造键、使用表达式、命名冲突解决,请考虑使用FeatureMerger。
- 如果您只希望获得一个连接的特征,不管连接的数量是多少(1:M join生成一个带有连接列表的特征,而不是像FeatureJoiner那样为每个连接生成一个特征),请使用FeatureMerger。
- FeatureJoiner不执行FeatureMerger执行的某些高级列表生成或几何图形处理操作,但这些操作可以通过使用FeatureJoiner和其他转换器来实现。
- 对于使用SQL语法的复杂连接,或两个以上的输入特性流,可以考虑使用InlineQuerier。
选择特性连接方法
许多转换器可以根据匹配的属性、表达式和/或几何图形执行数据连接。在为特定的连接任务选择连接时,需要考虑连接的复杂性、数据格式、索引、冲突处理和期望的结果。有些转换器使用SQL语法,有些直接访问外部数据库。他们可能支持,也可能不支持属性列表阅读和创作。
通常,选择最特定于您需要完成的任务的方法将提供最佳性能结果。如果有不止一种方法可以做到这一点(通常是这种情况),那么花时间在性能测试替代方法上可能是值得的。在读取外部表时(与工作空间中已经存在的特性相反),根据关键索引的存在,性能可能会有很大的差异。
变压器 |
匹配的 |
使用SQL语句 |
可以创建列表 |
输入类型 |
值得注意的 |
说明 |
---|---|---|---|---|---|---|
FeatureJoiner | 属性 | 没有 | 没有 | 特性 |
|
通过结合基于公共键属性值的属性和/或几何特性来连接特性。执行相当于内部、左侧和完整SQL连接的操作。 |
FeatureMerger | 属性 | 没有 | 是的 | 特性 |
|
根据匹配的关键属性值和表达式,将一组特性的属性和/或几何图形合并到另一组特性中。 |
ListBasedFeature合并 | 将属性列表为单个属性 | 没有 | 是的 | 特性 |
|
基于匹配,将一组特性的属性和/或几何形状合并到另一组特性上属性列表具有键属性值和表达式的值。 |
InlineQuerier | SQL查询 | 是的 | 没有 | 特性 |
|
从传入的特性创建一组SQLite数据库表,对它们执行SQL查询,并将结果作为特性输出。 |
SQLCreator | SQL查询 | 是的 | 没有 | 外部数据库 |
|
根据对数据库执行一次的SQL查询的结果生成FME特性。为SQL查询结果的每一行创建一个FME特性。 |
SQLExecutor执行器 | SQL查询 | 是的 | 没有 | 外部数据库 |
|
对数据库执行SQL查询。对于输入transformer的每个初始化特性,都会向数据库发出一个查询。初始化特性和查询结果都可以作为特性输出。 |
数据库连接程序 | 属性 | 没有 | 是的 | 外部数据库及特点 |
|
基于一个或多个公共键,将外部表的属性与工作空间中已有的特性连接起来。不需要SQL知识。非阻塞的变压器。 |
匹配器 | 几何和/或属性 | 没有 | 是的 | 特性 |
|
检测彼此匹配的特性。当特性具有匹配的几何形状、匹配的属性值或两者同时具有时,将声明它们以进行匹配。还可以指定特性之间必须不同的属性列表。 如果只匹配属性(而不是几何图形),那么使用FeatureMerger或其他方法将提供更好的性能。 |
配置
输入端口
组成连接的左表的功能。
组成连接的右表的功能。
输出端口
连接输出根据连接模式而变化。在所有情况下,它都将包含找到匹配项并已连接的功能。
为了内部连接,不包括其他功能。
为了左还包括未找到匹配项的联接、左特征。
为了满的还包括未找到匹配项的联接、左特性和右特性-也就是说,无论是否联接,此处都会输出所有特性。
如果连接模式为内部。
为了左和满的连接,此端口未使用。
如果连接模式为内部或左。
为了满的连接,此端口未使用。
参数
集团 | 输入特性可以按组按参数进行划分。如果您选择任何Group By属性,那么只有当特性之间的引用共享所选属性的公共值时,才会解析它们。如果不选择任何Group By属性,则所有特性都将一起处理。 如果您有多个阅读器,典型的用法是按reader_id进行分组,以确保在正确的特性集中解析引用。 注意:这类似于一个额外的联接键,但有一个细微的区别,即允许Group-By值为null/missing,而不会导致a
|
连接模式 | 指定要执行的连接类型。
注意:要执行右连接,请反转左和右输入连接并使用左连接模式。 |
|||||||||||||||
属性冲突解决 | 当连接的功能部件从左、右功能部件接收到具有相同名称(或公共属性)的属性时,这将指定连接输出的首选值。 | |||||||||||||||
几何处理 | 指定连接特性将使用什么几何图形。 使用左:左边输入的几何图形将被使用,右边输入的几何图形将被丢弃。 使用权:右边输入的几何图形将被使用,左边输入的几何图形将被丢弃。 总结左侧和右侧(强制唯一的名称):来自左边和右边输入的几何图形将被保留,并且每个几何图形部分将被赋予一个唯一的名称。
几何聚合的例子
|
表上的Join指定要从左输入和右输入进行比较的属性,以确定匹配的特征。当在加入桌子匹配。
左 | 从左侧的特性流中选择要用作键的属性。 |
正确的 | 从右侧的特性流中选择要用作键的属性。 |
比较模式 | 指定如何执行左右属性值之间的比较。如果自动或数字如果指定,则将尝试在比较属性值之前将其转换为数字。 |
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配transformer参数。更高级的功能,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击在可适用的参数旁边。有关更多信息,请参见变压器参数菜单选项。
定义值
有几种方法可以定义在转换器中使用的值。最简单的方法是简单地键入一个值或字符串,其中可以包括各种类型的函数,如属性引用、数学和字符串函数以及工作区参数。有许多工具和快捷方式可以帮助构造值,通常可以从value字段附近的下拉上下文菜单中获得。
使用文本编辑器
文本编辑器提供了一种从各种数据源(如属性、参数和常量)构造文本字符串(包括正则表达式)的方便方法,在这些数据源中,结果直接在参数内部使用。
使用算术编辑器
算术编辑器提供了一种从各种数据源(如属性、参数和特征函数)构造数学表达式的方便方法,在这些数据源中,结果直接在参数内部使用。
条件值
根据通过或失败的一个或多个测试条件设置值。
内容
表达式和字符串可以包含许多函数、字符、参数等。
当设置值时-无论是直接输入参数还是使用其中一个编辑器构造-包含字符串、数学、日期/时间或FME功能函数的字符串和表达式将对这些函数求值。因此,这些函数的名称(在@<函数名>)不应用作文本字符串值。
参考
处理行为 |
|
功能持有 |
是的 |
依赖关系 | 无 |
FME许可级别 | FME基础版及以上 |
别名 | |
历史 | |
类别 |
FME社亚搏国际在线官网区
FME社区是演示亚搏国际在线官网、操作、文章、常见问题等的地方。获取问题的答案,向其他用户学习,并对新功能提出建议、投票和评论。
搜索关于FeatureJoiner的所有结果在FME社区。亚搏国际在线官网
例子可能包含在政府开放执照下的信息-温哥华