Field Order

支持的管道类型:

  •  Data Collector

Field Order处理器对映射或列表映射字段中的字段进行排序,并将这些字段输出到列表映射或列表根字段中。

出于以下原因使用Field Order处理器:

排序map字段中的字段
映射字段中的字段没有定义的顺序。使用Field Order处理器指定字段的顺序,然后将字段输出到保留字段顺序的列表映射或列表根字段。
例如,假设您的管道读取JSON数据,而您想使用分隔数据格式写入该数据。Data Collector将映射根字段用于JSON数据。但是,要使目标将记录写为分隔数据,根字段类型必须是list或list-map。您可以使用Field Order处理器对映射根字段中的字段进行排序,并将已排序的字段输出到列表映射根字段。然后,您可以将记录写为分隔数据。
重新排列list-map字段中的字段
列表映射字段中的字段具有定义的顺序。需要重新排序字段时,使用Field Order处理器,然后将字段输出到列表映射根字段。

配置Field Order处理器时,可以定义字段的顺序。您指定是将有序字段输出到列表映射还是列表根字段。

您可以配置处理器如何处理记录中的缺失或多余字段。您还可以列出希望处理器从记录中丢弃的所有字段。

缺少和多余的字段

配置Field Order处理器时,可以指定要排序的字段列表。传入记录可能缺少这些字段之一,或者可能还有一些额外的字段。您可以配置处理器如何处理任何缺失或多余的字段。

Field Order处理器在每个记录中可能遇到以下类型的字段:

缺少字段
缺少的字段是您在被排序列表中指定的字段,但在记录中不存在。例如,您按以下顺序列出这些字段:FirstName, LastName, Age。但是,传入的记录不包括Age字段。
当处理器遇到带有缺失字段的记录时,它可以根据为该阶段配置的错误处理来处理该记录,也可以为缺失字段使用默认值。如果将处理器配置为使用默认值,则输入默认值和数据类型以用于缺少的字段。处理器为每个缺少的字段分配相同的默认值和类型。
多余的字段
多余的字段是您未在被排序列表中指定但在记录中确实存在的字段。例如,您按以下顺序列出这些字段:FirstName, LastName, Age。但是,传入的记录包括MiddleName字段。
当处理器遇到带有多余字段的记录时,它可以根据为该阶段配置的错误处理来处理该记录,或者可以丢弃所有多余字段。

配置Field Order处理器

配置Field Order处理器以对映射或列表映射字段中的字段进行排序。

  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Required Fields 必须包含用于将记录传递到阶段的记录的数据的字段。

    提示:您可能包括阶段使用的字段。

    根据为管道配置的错误处理,处理不包括所有必填字段的记录。

    Preconditions 必须评估为TRUE的条件才能使记录进入处理阶段。单击 添加以创建其他前提条件。

    根据为该阶段配置的错误处理,处理不满足所有前提条件的记录。

    On Record Error 该阶段的错误记录处理:

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对群集管道无效。
  2. 在“Order选项卡上,配置以下属性:
    排序属性 描述
    Fields to Order 所需顺序的字段列表。

    键入列表中的字段,或使用预览数据选择字段。

    Output Type 根字段类型可将有序字段输出到:列表映射或列表。
    Missing Fields 如果记录中缺少有序列表中的字段,请采取的措施:

    • Send record to error
    • Use default value

    如果缺少多个字段,则处理器为每个字段分配相同的默认值和数据类型。

    Default Value 用于缺少字段的默认值。
    Default Type 用于缺少字段的默认数据类型。
    Extra Fields 如果记录包含未在有序列表中指定的多余字段,请采取的行动:

    • Send record to error
    • Discard all extra fields
    Discard Fields 要从记录中丢弃的字段列表。

    键入列表中的字段,或使用预览数据选择字段。

    这些字段也不能在有序列表中指定。如果处理器配置为放弃所有其他字段,则不会显示该字段。