你在这里: 亚搏在线工作流程 > inlinequerier

inlinequerier

针对由从传入功能创建的表组成的临时数据库来执行SQL查询,将结果返回为新功能。

可以创建任意数量的表,每个表将被分配一个输入端口。只要它们为表所定义的每列的值提供值,就可以路由到该输入端口。类似地,可以指定任何数量的查询,并且每个都被分配一个输出端口,通过该输出端口通过该输出端口,该功能将被路由该查询的特征。查询可以涉及输入中定义的任何和所有表和列。特别地,可以使用多种方式连接,可以使用涉及嵌套选择语句和高级谓词的高级SQL操作,并且输入表可以由多个查询使用。

该变形器对来自没有SQL能力的源的SQL启用输入的功能的输入流尤其有用,以及在流中执行多路连接。

添加到工作区中的Inlinebuerier变压器最初没有输入或输出端口。您必须将其配置为定义至少一个表和至少一个关联查询。然后,这些表定义和关联查询随后成为变换器的相应输入和输出端口。

Inlinequerier使用SQLite数据库来存储表,然后执行查询。看http://www.sqlite.org/lang_select.html.有关支持的SQL SELECT语句语法的详细参考。

参数

输入

Inlinequerier需要定义一个或多个表,这将成为变压器的输入端口。这进口…按钮提供了一种快速方法,可以从工作区中的源功能类型填充输入表定义。要添加输入端口,必须定义表名和可以执行查询的某些列。

笔记:出于性能原因,您应该尽可能少的列。

在运行时,变压器将在处理任何查询之前为每个列构建索引。除了定义的列外,一个特殊的fme_feature_content.列在每个表上隐式定义,并且在运行时,可以认为此列包含通过表端口输入的FME功能的整个内容。因此,只有在表中定义将用于过滤或加入的属性 - 任何附加属性(以及特征几何)都可以通过选择所产生的输出功能来放置在产生的输出功能上fme_feature_content.柱子。

输出

每个输出端口都分配了SQL查询。有用的编辑器用于构造查询,并提供对可以在查询中使用的表,列和发布以及私有参数的方便拖放访问权限。这产生按钮将创建一个带有默认值的输出端口选择 *查询每个输入表。

在翻译结束时,每个连接的端口的查询都将针对Inlinequerier的临时数据库执行。从输出端口发出特征,每个行都会导致执行SQL查询。

如果查询结果包括fme_feature_content.属性(明确或通过使用a选择 *),然后将包含原始功能的内容将包含在输出功能上。

在查询加入多个表的情况下,具有多个值fme_feature_content.,生成功能的属性将按顺序合并fme_feature_content.查询中遇到的值。如果原始功能具有相同名称的属性,那么第一个fme_feature_content.在结果行中发现将在输出功能和随后的情况下具有其特征属性fme_feature_content.在合并期间将忽略其重复的功能属性。(如果这是不希望的,您可以使用attributerenamer.在Inlinequerier之前,以确保输入流中的唯一属性名称。)

此外,默认情况下,生成的合并功能将从遇到的第一源功能中具有几何体。您可以将查询的几何类型定义为“所有功能的聚合”;在这种情况下,由此产生的合并功能将包含所有输入特征的聚合几何形状,其各自的顺序fme_feature_content.遇到值。

输出功能坐标系

输出功能上的坐标系将是:

  1. 如果没有,则解开fme_feature_content.被选中;
  2. 如果您选择具有“第一个功能”的功能内容,请设置为第一个功能;
  3. 设置为所有“内容”功能的公共坐标系,如果“聚合”模式有效所有输入功能都具有相同的坐标系。

否则它将被留下未命中。

笔记:关于表内容的注释:为输入端口定义的表需要源特征的属性来执行查询的源特征。它们不必 - 并且不应该 - 包含额外的属性。在正常情况下,一个选择 *将执行查询类型,这将引入所有属性和原始功能的源几何图形,因为它将包括特殊功能fme_feature_content.柱子。

笔记:有关路由到输入端口的功能的注释:路由到输入端口的功能应在它们上具有属性,该属性与为输入端口表定义的模式匹配。如果没有,将插入空值,以代替为输入表定义的列的缺失属性。上游attributerenamer.或者nullattributemapper.可用于确保已定义列存在属性值。

使用说明

关系到featuremerger.

Inlinequerier是TeatureMerger的强大表征。虽然TeverUremerger加入了两个数据集并使用一个简单的单个属性键来匹配功能,Inlinequerier允许使用任何数量的输入数据集,在任意数量的表和列中使用SQL的全功率。此外,Inlinequerier允许其输入数据在单个变压器中多次重复使用,而如果要使用Featuremerger进行多个连接,则必须采用多个特色生理和发送到每个功能的功能。另一方面,Inlinequerier有一些开销,用于加载底层的SQLite数据库。使用单个Inlinequerier而不是几个Featuremerger也简化了工作空间。

除非在工作流中只需要单个特派团,否则Inlinequerier可能是更好的选择。亚搏在线具有多个级联特性的旧工作空间可以通过用单一正确配置的Inlinequerier替换特派团来体验性能改进。

关系到SQLCreator./SQLExecutor.

Inlinebuerier可以被认为是SQLCreator / SQLExecutor变压器的狡猾表征,因为它允许SQL的功率应用于源自非SQL能力数据源或不相交的SQL功能源的数据集。

如果要查询的所有数据已经​​存在于支持SQL的数据源中,则使用SQLCreator或SQLExecutor总是更有效的,因为这允许在它进入之前直接执行要执行的数据和过滤数据FME环境。

关系到databasejoiner.

当在流过FME和数据库中的数据之间存在一对一或一对多的关系时,DatabaseJoiner非常有用和有效。如果可以使用它,DatabaseJoiner可以比使用Inlinequerier或SQLCreator / SQLExecutor更有效,只要DatabaseJoiner键字段在源数据库中具有索引。DatabaseJoiner允许基于多个属性键的简单连接关系,并且不需要对SQL的了解 - 这通常对简单的查找表来说非常有效。在数据源没有SQL能力或更复杂的查询的情况下,Inlinequerier非常有用。Inlinequerier允许您向数据提出比DatabaseJoiner更复杂的问题。

例子

编辑变换器参数

使用一组菜单选项,可以通过引用工作区中的其他元素来分配变压器参数。一些变压器也可提供更高级的功能,例如高级编辑器和算术编辑器。要访问这些选项的菜单,请单击除适用的参数旁边。有关更多信息,请参阅变换器参数菜单选项

变压器类别

亚搏在线工作流程

搜索FME知识中心

搜索有关此变压器的样本和信息FME知识中心