Field Zip

支持的管道类型:

  •  Data Collector

Field Zip处理器将列表数据从两个字段合并到一个字段中。您可以使用Field Zip处理器合并两个List字段或List-Map字段。使用处理器合并相关的数据列表。

Field Zip处理器将列表数据与相应的列表合并。如果一个列表包含的列表项多于另一个列表,则多余的列表项不会合并。处理器保留原始列表字段,因此不会丢失任何数据。

配置Field Zip处理器时,可以指定两个要合并的字段和要写入合并数据的字段。默认情况下,处理器会合并列表中的字段名称和值。您可以将处理器配置为仅合并值。

如果记录中的一个或两个字段与指定的要合并的字段不匹配,则可以配置Field Zip处理器按原样传递记录而不合并任何字段,或将记录传递给管道以进行错误处理。

合并列表数据

在列表字段中合并数据时,Field Zip处理器会将列表中的每个项目与另一个列表中的相应项目合并。处理器使用列表的顺序合并列表,并返回Map字段的列表。

列表中没有其他列表中匹配项目的任何项目都不会合并。

例如,假设您有一个包含两个列表字段的记录:

order itemID cost
23523482
  • 2
  • 113
  • 954
  • 6502
  • 89.95
  • 8.95
  • 6.95

假设您将Field Zip处理器配置为合并ItemID和Cost字段,然后将数据写入Purchase字段。然后,Field Zip处理器将生成以下记录:

在Purchase字段中,合并后的数据是映射的列表。每个映射在ItemID列表中具有字段名称和值,并与Cost列表中的相应字段名称和值合并。请注意,第四个ItemID,/ItemID/3未包含在合并列表中,因为它没有相应的Cost信息。

如果将Field Zip处理器配置为仅合并值,则该处理器将返回相同的数据,但不包含原始字段名称,如下所示:

合并列表映射数据

与列表字段一样,在合并列表映射字段中的数据时,Field Zip处理器会将列表中的每个项目与另一个列表中的相应项目合并。处理器使用列表的顺序合并列表,并返回Map字段的列表。

区别在于,映射字段中的列表包含不同的信息对,而不是列表字段中的匹配信息对。

例如,假设您有一个包含两个List-Map字段的记录,每个字段在列表中都有一个映射:

basics additional
0

  • id: 23
  • color: 20005
  • info: <null>
0

  • inventory: 80
  • cost: $5.98

假设您配置Field Zip处理器以合并Basics和Additional两个List-Map字段,并将结果写入All字段。Field Zip生成以下记录:

请注意,每个映射如何包含一组不同的字段。处理列表字段时,Field Zip返回匹配的字段集。还要注意,/Basics/Info字段不包括在内,因为在另一个List-Map字段中没有对应的项目。

如果将Field Zip处理器配置为仅合并值,则该处理器将返回相同的数据,但不包含原始字段名称,如下所示:

透视合并的列表

根据您的用例,您可能希望在将列表数据与Field Zip处理器合并之后,将Field Pivoter处理器添加到管道中。

Field Pivoter可以透视合并的列表数据,并为列表中的每个第一级项目创建一条记录。

例如,假设您使用Field Pivoter来处理在上面的第一个“列表”示例中生成的数据 ,并且字段名称包含在合并列表中。您配置Field Pivoter以将数据透视图写入到名为Purchased_Item的新字段中。

单个记录的透视将导致合并列表中的以下三个记录:

Order ItemID Cost Purchase Purchased_Item
23523482
  • 2
  • 113
  • 954
  • 6502
  • 89.95
  • 8.95
  • 6.95
      • itemID: 2
      • cost: 89.95
      • itemID: 113
      • cost: 8.95
      • itemID: 954
      • cost: 6.95
    • itemID: 2
    • cost: 89.95
23523482
  • 2
  • 113
  • 954
  • 6502
  • 89.95
  • 8.95
  • 6.95
      • itemID: 2
      • cost: 89.95
      • itemID: 113
      • cost: 8.95
      • itemID: 954
      • cost: 6.95
    • itemID: 113
    • cost: 8.95
23523482
  • 2
  • 113
  • 954
  • 6502
  • 89.95
  • 8.95
  • 6.95
      • itemID: 2
      • cost: 89.95
      • itemID: 113
      • cost: 8.95
      • itemID: 954
      • cost: 6.95
    • itemID: 954
    • cost: 6.95

配置Field Zip处理器

使用Field Zip处理器合并记录中的两个相应列表字段。

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

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

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

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

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

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

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对集群管道无效。
  2. 在“Zip选项卡上,配置以下属性:
    字段合并属性 描述
    Fields to Zip 配置要合并的字段和输出字段,如下所示:

    • First Field-要使用的第一个List或List-Map字段。
    • Second Field-要使用的第二个列表或列表映射字段。
    • Path for Zipped Field-处理器在其中写入合并列表数据的字段。
    Zip Values Only 合并列表时仅包括字段值。未选择时,处理器将包括字段名称和值。

    有关处理器如何合并列表数据的更多信息,请参见合并列表数据。

    Field Does Not Exist

    当一个或两个列表字段在记录中不存在时要采取的措施:

    • Include without Processing-按原样传递记录而不创建合并字段。
    • Send to Error-将记录传递到管道以进行错误处理。