细木工
joiner查询外部表以检索与功能关联的属性。将一个或多个功能属性联接到数据库表中的一个或多个列,并将匹配表行中的值作为特征属性添加。
这个_匹配的记录属性指定功能在数据库中匹配的记录数。
参数
Joiner是一个功能强大的变压器,具有许多与性能相关的设置。
读卡器
选择表所在的读卡器格式和数据集,包括任何特定格式的参数。
加入
指定要联接的表。单击“浏览”按钮从列表中选择表。请注意,只有在完全指定了读卡器格式之后才能选择此选项。数据集,以及格式化特定参数。
从传入功能中选择属性及其相应的表字段,这些字段将用于查找匹配项。当所有属性的值等于其对应表字段的值时,将进行匹配。
在表条目小部件中,每个属性和列对有一行。通过单击表右侧的加号(+)按钮,可以添加更多对。同样地,按减号(-)按钮可以删除对。必须至少指定一对才能使联接工作。
从“要素属性”列的下拉列表中选择属性。(您可以直接在相应的表字段中键入,也可以通过单击“浏览”按钮从列表中选择。)对于“浏览”按钮,可以列出可用的表字段,需要指定从表中读取的所有信息。
指定要联接到传入功能的匹配表行中的字段列表。
要从列表中选择字段,单击浏览按钮。将出现一个显示可能字段列表的对话框。在您要添加的每个字段旁边放置一个复选框,然后单击“确定”。
如果没有指定字段,将添加匹配行中的所有字段。
指示数据库行和每个功能之间的关系类型。这将描述与每个功能匹配的行数,以及如果找不到预期的数目,连接者将采取什么操作。
关系类型 | 说明 |
---|---|
全部匹配(1:m) | 一个功能可以匹配任意数量的记录,所有这些都将基于多个匹配项参数。 |
先匹配(1:0..1+) | 一个功能可以匹配任意数量的记录,或者根本没有,但只有找到的第一条记录才会加入。 |
必须匹配一个(1:1) | 每个功能只能与一个记录匹配。零个匹配或多个匹配将导致错误。 |
必须匹配零或一(1:0..1) | 每个功能必须与单个记录匹配或完全不匹配。多个匹配将导致错误。 |
注:这个必须匹配规则非常严格。如果有疑问,使用先匹配或全部匹配.
指定如何提供多个匹配的结果。
为每个匹配创建一个特征:匹配的每一行都添加到传入功能的副本中。在这种情况下,对于中的每个功能,将有匹配的功能。
在列表属性上添加字段:匹配的每一行都添加到功能的列表属性中。在这种情况下,对于中的每个功能,始终会有一个功能输出。
合并属性
如果合并已加入被选中,将合并功能和表中的属性,如果发生冲突,则冲突解决将使用参数。如果前缀已联接被选中,然后所有传入的属性都将显示在前缀参数。
此参数在以下情况下启用:积累方式设置为合并已加入.使用原件和使用已加入在属性冲突的情况下,将分别优先处理原始属性和传入属性。
指定的值用作传入属性的前缀,当积累方式是前缀已联接.
优化
通常,缓存中充满了与数据库中匹配的记录。然而,对于支持SQL的格式,可以预加载缓存(即,通过发出预取查询,在进行匹配之前填充特定的数据集。此预取查询可以选择整个表或表中最可能与功能属性匹配的选定部分。
注:除非预取查询是详尽的,应用缓存大小限制。请参阅完全预取以了解完全预取查询的构成
已知用于检索所有可能匹配项的预取查询称为详尽的查询.如果在详尽查询的缓存结果中找不到匹配项,假设数据库中不存在匹配项;因此,不会进一步查询数据库。
如果全神贯注设置为是的,请这表示预取是否已完成。即使设置为不,请然而,如果任何预取查询不包含WHERE子句,则假定该查询是详尽的,其形式如下:
从tablename中选择*
注:当FME认为预取查询是详尽的,将忽略缓存大小限制。这是因为缓存必须包含查询的所有结果。
例如,“道路”类型的许多FME特征需要数据库匹配。数据库表(杨梅科植物)有一个字段(记录类型)具有多个值;道路,公路,大道,街道。FME功能将只与记录类型=道路因此,如果发出以下预取,整个联接过程将更加高效:
从myrecords中选择*,其中record_type='roads'
如果不希望接受默认值5000,请指定要在本地缓存的行数。您可以选择指定SQL查询来预加载缓存。请注意,如果预取查询已用尽,则会忽略缓存大小。
如果数据库中的键列值已知包含尾随空格,则接合键字段的剪裁可能会显著降低性能,并且只应执行此操作。
如果使用了详尽的预取查询,则不会产生任何效果(有关全神贯注)。
注:这个参数是为了向后兼容而包含的,大多数用户不需要使用它。只能使用工作台的导航器窗格访问参数。
提示:
使用说明
与…的关系特色并购
FeatureMerge将两个正在工作区中读取的数据集连接起来。FeatureMerge还可以使用其合并类型参数。FeatureMerge执行内存中的所有联接,因此,如果在同一数据上有多个关系,它可能比连接程序更快。joiner连接由数据库使用SQL执行。文章FME2011用例:Joiner与FeatureMerger包含这些变压器的更详细比较。
与…的关系内联查询程序/SQL创建器/SQL执行器
当通过FME的数据和数据库中保存的数据之间存在一对一或一对多关系时,连接程序非常有用和有效。如果可以使用,joiner比使用inlinequerier或sqlcreator/sqlExecutor更有效,前提是joiner关键字字段在源数据库中具有索引。Joiner允许基于多个属性键的简单连接关系,并且不需要了解SQL——这对于简单的查找表通常非常有效。sqlCreator/sqlExecutor允许更复杂的联接,这些联接由源数据库执行。
在数据源没有SQL能力的情况下,inlinequerier非常有用,或者更复杂的查询。与连接程序相比,inlinequerier允许您对数据提出更复杂的问题。
例子
编辑变压器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来指定变压器参数。更高级的功能,例如高级编辑器和算术编辑器,在一些变压器中也有。要访问这些选项的菜单,点击在适用参数旁边。更多信息,看见变压器参数菜单选项.
变压器类别
搜索FME知识中心
在上搜索有关此变压器的示例和信息FME知识中心.