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

InlineQuerier

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

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

以SQL启用的从那些没有能力SQL来源的功能输入流,以及进行跨流多路连接该变压器是非常有用的。

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

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列。

注意:关于路由到输入端口的特性的说明:路由到输入端口的特性应该具有与为输入端口表定义的模式相匹配的属性。如果没有,则将插入null值,以替代为输入表定义的列所缺少的属性。一个上游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环境之前直接执行查询和过滤。

关系DatabaseJoiner

当流经FME的数据与数据库中的数据之间存在一对一或一对多的关系时,DatabaseJoiner非常有用和高效。如果可以使用DatabaseJoiner,那么它可能比使用InlineQuerier或SQLCreator/SQLExecutor更有效,前提是DatabaseJoiner键字段在源数据库中有索引。DatabaseJoiner允许基于多个属性键的简单连接关系,并且不需要SQL知识——这对于简单的查找表通常非常有效。InlineQuerier在数据源不具备SQL能力或用于更复杂的查询的情况下非常有用。InlineQuerier允许您提出比DatabaseJoiner更复杂的关于数据的问题。

编辑变压器参数

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

变压器的分类

亚搏在线工作流程

搜索FME知识中心

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