你在这里: 数据库 > InlineQuerier

InlineQuerier

对临时数据库执行SQL查询,该数据库由从传入特性创建的表组成,并将结果作为新特性返回。

可以创建任意数量的表,并为每个表分配一个输入端口。任何特性都可以路由到该输入端口,只要它们为为表定义的每个列提供值即可。类似地,可以指定任意数量的查询,并为每个查询分配一个输出端口,通过该端口可以路由查询产生的特性。查询可以涉及在输入中定义的任何和所有表和列。特别是,可以执行多路连接,可以使用嵌套Select语句和高级谓词的高级SQL操作,可以使用多个查询来使用输入表。

这个转换器对于支持SQL的输入流特别有用,这些输入流来自没有SQL能力的源,也可以执行跨流的多路连接。

添加到工作区中的InlineQuerier转换器最初没有输入或输出端口。您必须配置它来定义至少一个表和至少一个相关查询。这些表定义和相关查询随后成为转换器的输入和输出端口。

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

参数

输入

InlineQuerier需要定义一个或多个表,这些表将成为转换器的输入端口。的进口…按钮提供了一种快速的方法来填充来自工作区的源特性类型的输入表定义。要添加输入端口,您必须定义一个表名和一些可以执行查询的列。

注意:出于性能原因,应该尽可能少地定义列。

在运行时,transformer将在处理任何查询之前为每个列构建一个索引。除了定义的列外,还有一个特殊的fme_feature_content列隐式地定义在每个表上,在运行时可以认为该列包含通过表的端口输入的FME特性的全部内容。因此,只应该为表定义过滤或连接中使用的属性——通过选择fme_feature_content列。

输出

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

在转换结束时,每个连接端口的查询将对InlineQuerier的临时数据库执行。对于执行SQL查询产生的每一行,输出端口都会发出一个特性。

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

在查询用多个值联接多个表的情况下fme_feature_content,则结果特性的属性将按fme_feature_content在查询中会遇到值。如果最初的特性具有具有相同名称的属性,则第一个特性具有相同名称fme_feature_content在结果行中找到的特性属性将在输出特性和后续特性中找到fme_feature_content将在合并期间忽略它们的重复特性属性。(如果不希望这样,可以使用AttributeRenamer在InlineQuerier之前确保输入流中唯一的属性名。)

此外,默认情况下,合并后的特性将具有遇到的第一个源特性的几何形状。您可以定义查询的几何类型为“所有功能的聚合”;在这种情况下,合并后的特性将包含所有输入特性的聚合几何图形,按它们各自的顺序排列fme_feature_content价值观。

输出特征的坐标系

输出特征上的坐标系为:

  1. 未设置如果没有fme_feature_content被选择;
  2. 设置为,如果您选择接受“第一功能”功能内容的第一功能;
  3. 集到公共坐标的所有的“内容”的特性的系统,如果“聚合”模式有效所有输入功能具有相同的坐标系。

否则它将被取消设置。

注意:上表中的内容的说明:为输入端口定义的表需要执行查询的源特性的属性。它们不需要——也不应该——包含额外的属性。在正常情况下,a选择 *查询类型将被执行,这将从原始特性中引入所有的属性和源几何图形,因为它将包含特殊的fme_feature_content列。

注意:对功能的说明发送到输入端口:路由到输入端口的特性应该具有与为输入端口表定义的模式匹配的属性。如果没有,则将插入空值,以替代为输入表定义的列所缺少的属性。一个上游AttributeRenamerNullAttributeMapper可用于确保的属性值存在于定义的列。

使用注意事项

关系FeatureMerger

该InlineQuerier是FeatureMerger强大的表弟。而FeatureMerger将两个数据集,并使用一个简单的,单一的属性键相匹配的特点,InlineQuerier允许合并任何数量的输入数据集,使用在任意数量的表和列的SQL的全部力量。此外,InlineQuerier允许其输入数据以在单个变压器多次重复使用,而如果有多个被联接成与FeatureMerger来完成,多发性FeatureMergers必须采用和的特征的副本发送到每个。在另一方面,有一些开销的InlineQuerier加载底层SQLite数据库。使用单一InlineQuerier,而不是几个FeatureMergers也简化了工作区。

除非需要在工作流只有一个FeatureMerger,该InlineQuerier可能是一个更好的选择亚搏在线。多级联FeatureMergers较早的工作区可以通过一个单一的正确配置InlineQuerier更换FeatureMergers体验到性能的改善。

关系SQLCreator/SQLExecutor

的InlineQuerier可以被认为是作为SQLCreator / SQLExecutor变压器的狡猾表妹,因为它允许SQL的电力从非SQL能够数据源或不相交的SQL-能源被施加到数据集始发。

如果要已经查询了所有的数据存在于SQL能力的数据源,它始终是更有效地使用该SQLCreator或SQLExecutor,因为这允许查询和数据的滤波以直接由数据库在其进入之前执行 FME environment.

关系细木工

当存在一个数据库内保持流过FME数据和数据之间的一到一个或一对多的关系的钳工是非常有用和有效。如果可以使用的,连接符可以比使用任一InlineQuerier或SQLCreator / SQLExecutor更有效的,条件是所述连接符键字段具有在源数据库中的索引。乔伊纳允许简单连接基于多个属性键的关系,不需要SQL知识 - 这往往是简单的查找表非常有效。该InlineQuerier是在数据源没有SQL的能力,或更复杂的查询情况下非常有用。该InlineQuerier允许您询问比木匠的数据更复杂的问题。

编辑变压器参数

使用一组菜单选项,变压器参数可以通过引用在工作区中的其它元件来分配。更先进的功能,如高级编辑,算术编辑,也是一些变压器可用。要访问这些选项的菜单,点击适用的参数旁边。欲了解更多信息,请参阅变压器参数菜单选项

变压器分类

数据库

搜索FME知识中心

搜索样品和有关该变压器的FME知识中心