关于作者特征类型:用户属性

Writer Feature Types是Workbench画布上的对象,它定义要写入的数据的模式。最重要的是,它们定义了两个具体的东西:

  • 被写入目标数据集的层,以及
  • 这些层将拥有的属性。

属性定义

写入器特性类型属性

每个Writer Feature Type对话框包含一个用户属性选项卡。这些参数允许您定义与此特性类型相关联的属性。属性可以通过编辑现有的特性类型来定义,也可以通过向工作区添加新的特性类型来定义。

属性可以用三种方式定义:自动、手动或动态。

默认选项是手册

用户属性定义手册

手动用户属性定义是工作空间作者手动输入属性名称,并手动选择属性类型:

这个例子显示了为一个地址表定义的三个属性。

在Workbench画布上,特性类型看起来像这样:

自动用户属性定义

一个自动属性定义是Workbench自动定义属性列表的时候,这取决于连接的Reader特性类型。单击Automatic选项时,属性定义字段为空,不能编辑它们。

类似地,在Workbench画布上,特性类型也是空的:

使定义自动的是连接Reader特性类型时发生的动作:

注意,在Reader特性类型上定义的所有属性现在都会自动复制到Writer特性类型。

因为这是自动操作的,如果Reader特性类型被删除,并且连接了另一个,Writer特性类型上的属性列表将立即更新以匹配。或者,如果连接了第二个Reader特性类型,则属性列表更新为这两种类型的联合:

这很有用,因为这意味着多个数据流可以合并到一个特性类型中,并且所有属性定义都是自动定义的。

但是,Automatic选项没有处理更改Reader数据集参数以读取具有不同属性集的数据的场景。换句话说,Writer属性将仅由连接的内容定义,而不是源数据中实际存在的内容。对于这种情况,你需要动态属性

动态用户属性定义

指定动态属性还会导致选中动态属性选项(在常规选项卡中):

类似于一个自动属性定义,初始特性类型将不包含属性。当连接Reader特性类型时,特性类型仍然不包含属性。动态特性类型确实没有预先定义。相反,它从工作空间运行时提供给它的数据或用户选择的另一组模式定义中动态获取属性定义。

自动和动态属性定义的区别

  • 自动属性定义从工作区中连接到它的属性定义中获取属性定义。如果更改了“源数据集”参数,则不会产生任何影响。
  • 动态属性定义是不同的。如果更改了源数据集参数,则动态模式(默认情况下)将从正在读取的任何源数据获取其属性定义。

添加和管理特性类型

正如我们已经看到的,Writer模式将“我们想要的”定义为目标数据集。因此,如果您想要在特定数据集中将数据写入特定的层,那么您必须确保该层被定义为画布中的特征类型。

在某些情况下,这是自动发生的。当您生成一个工作区时,您选择的源数据集将被扫描,并且在工作区中的所有层都将得到匹配的特征类型对象——在Reader和Writer上都是如此。

注意:当FME添加Writer特性类型作为新工作区的一部分时,这些特性类型将从选定的源数据集获得固定的(手动的)属性定义。然后可以手动编辑这些属性。

然而,在大多数情况下,您需要单独管理Writer特性类型,因为您想从Writer得到的东西与在Reader中得到的不一样。例如,如果您希望将输入数据层划分为输出数据集中的两个层,则需要添加一个新的Writer特性类型。

手动添加Writer特性类型会对层次图产生这种影响。您的输出被设计成只有一个单层;现在它有两个。

向现有写入器添加特性类型

特性类型可以手动添加到编写器使用作家>添加的功能类型在菜单条上。

注意:翻译层级中必须至少有一个作者;否则此选项将变为灰色。

选择添加的功能类型将特性类型对象放置在工作区上,然后打开特性类型对话框,以便您可以编辑特性类型的属性。

与编辑模式类似,Parameters选项卡可用于定义新特性类型的名称。

特性类型名称使用特定格式的术语,因此标签可能是功能类表的名字表名,或任何特定于你要写的数据格式的术语:

添加特性类型后,在User Attributes选项卡中定义模式。

向新写入器添加特性类型

当你添加一个新的Writer时,你也可以控制添加到工作区的特性类型:

有六种添加特性类型的选项:

  • Automatic:添加一个新的特性类型,属性定义参数设置为Automatic。这是默认值。
  • Manual:添加一个新的特性类型,属性定义参数设置为Manual。
  • 从Reader复制:添加一个新的特性类型,属性定义参数设置为手动,但预定义到现有Reader特性类型的模式中。
  • 从数据集导入:添加一个新的特性类型,属性定义参数设置为手动,但已预定义到外部数据集的模式中(就像使用导入特性类型工具一样)。
  • Dynamic:添加一个属性定义参数设置为Dynamic的新特性类型。
  • None:不添加新的特性类型。

将特征类型复制到写入器

在添加Writer时,可以创建一个新特性类型,其属性模式预先定义为现有Reader的属性模式。但是,如果您已经有了Writer,您仍然可以执行复制Reader模式的相同过程。这只需选择所需的Reader特性类型,右键单击它们,然后使用选项即可复制(作家)

使用该命令可以将Reader特性类型的副本添加到写入器中,并自动连接源/目的特性类型。

翻译层次结构中必须至少有一个作者,否则将禁用此选项。