LookupRecord

文档中心 › 组件索引 › LookupRecord

LookupRecord Processor

类型全限定名:cn.org.acal.lynxus.processors.standard.LookupRecord

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

从记录中提取一个或多个字段,并在查找服务中查找这些字段的值。

标签

lookupenrichmentrouterecordcsvjsonavrodatabasedblogsconvertfilter

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Record Reader控制器服务 API:
RecordReaderFactory
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定用于读取传入数据的 Controller Service
Record Writer控制器服务 API:
RecordSetWriterFactory
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定用于写出记录的 Controller Service
Lookup Service控制器服务 API:
LookupService
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于查找每个记录中的值的查找服务
Root Record Path指向 FlowFile 中每个顶级记录内的子记录的 RecordPath。如果指定,额外的 RecordPath 属性 将针对此子记录而不是顶级记录进行求值。这允许在单个 顶级记录中对多个子记录进行丰富处理。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Routing Strategyroute-to-success
  • Route to 'success' — 无论配置的查找服务中是否存在匹配,记录都将被路由到 'success' 关系
  • Route to 'matched' or 'unmatched' — 记录将被路由到 'matched' 或 'unmatched' 关系,具体取决于在配置的查找服务中是否存在匹配。单个输入 FlowFile 可能产生两个不同的输出 FlowFile。如果给定的 Record Path 求值后会评估多个子记录,则父记录将被路由到 'unmatched',除非所有子记录都匹配。
指定查找完成后如何路由记录
Record Result Contentsinsert-entire-record
  • 插入完整记录 — 从查找服务检索到的完整记录将插入到目标路径中。
  • 插入记录字段 — 从查找服务检索到的记录中的所有字段将插入到目标路径中。
当获得包含记录的结果时,此属性确定是将记录本身插入到配置的路径处,还是将记录的内容(即子字段)插入到配置的路径处。
Record Update Strategyuse-property
  • 替换现有值 — 将忽略 "Result RecordPath" 属性,查找服务必须是简单的单键查找服务。每个动态属性值应为记录路径。对于每个动态属性,对应记录路径的字段中包含的值将用作查找服务中的键,查找服务返回的值将用于替换现有值。可以配置多个动态属性以在一次执行中替换多个值。此策略仅支持简单类型的替换(字符串、整数等)。
  • 使用 "Result RecordPath" 属性 — 将使用 "Result RecordPath" 属性来确定记录的哪一部分应使用查找服务返回的值进行更新
此属性定义使用查找服务返回的值更新记录时要使用的策略。
Result RecordPath指向应使用查找服务返回的值更新的字段的 RecordPath。如果未指定,则从查找服务返回的值将被忽略,仅用于确定 FlowFile 是否应路由到'matched'或'unmatched'关系。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Cache Size0指定要缓存多少查找值/记录。将此属性设置为零表示不进行缓存,每条记录中的每个查找值都将查询表。如果查找表经常变化或必须获取最新数据,请不要使用缓存。
支持表达式语言:是(仅使用环境/系统变量求值)

动态属性

动态属性允许用户自定义属性的名称与值。

名称值描述
要查找的值有效的 Record Path指向字段的 RecordPath,其值将在配置的查找服务中查找

关系 (Relationships)

名称描述自动终止
failure如果无法丰富某个FlowFile,则未更改的FlowFile将被路由到此关系否
success如果配置如此,所有记录都将发送到此关系,除非发生故障否

写入的 FlowFile 属性

名称描述
mime.type将 mime.type 属性设置为Record Writer指定的 MIME 类型
record.countFlowFile中的记录数

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。

详细说明

LookupRecord

LookupRecord 利用 Lynxus RecordPath 领域专用语言(DSL),让用户指定 Record 中应更新哪些字段 (取决于 Record Update Strategy)。Record 会使用所提供的 Lookup Service 返回的值进行更新。

Record Update Strategy - Use Property

在这种情况下,用户应在 Processor 配置中添加 Lookup Service 形成查询坐标所需的用户自定义属性, 属性名应与 Lookup Service 所期望的名称匹配。

使用 "Result RecordPath" 属性所配置路径求值得到的字段,就是会被 Lookup Service 返回值更新的字段。

假设有一个包含以下键值对的 Simple Key Value Lookup Service:

FR => France CA => Canada

假设输入是以下包含三条记录的 JSON:

[
  {
    "country": null,
    "code": "FR"
  },
  {
    "country": null,
    "code": "CA"
  },
  {
    "country": null,
    "code": "JP"
  }
]

Processor 的 "Record Update Strategy" 配置为 "Use Property","Result RecordPath" 配置为 "/country",并添加了一个名为 "key"(该 Lookup Service 所要求的)的用户自定义属性,值为 "/code"。

触发时,Processor 会查找 "/code" 路径对应的值,并把该值用作 Lookup Service 的 "key"。 Lookup Service 返回的值将用于更新 "/country" 对应的值。对于上述示例,会产生:

[
  {
    "country": "France",
    "code": "FR"
  },
  {
    "country": "Canada",
    "code": "CA"
  },
  {
    "country": null,
    "code": "JP"
  }
]

Record Update Strategy - Replace Existing Values

使用此策略时,"Result Record Path" 属性会被忽略,且配置的 Lookup Service 必须是单键简单查询 服务。对于每个用户自定义属性,记录路径对应字段中的值会被用作 Lookup Service 的键,并被 Lookup Service 返回的值替换。可以配置多个动态属性,在一次执行中更新多个字段。此策略只支持 简单类型的替换(字符串、整数等)。

由于此策略支持原地替换,因此可以对数组内的字段使用 Record Path。

假设有一个包含以下键值对的 Simple Key Value Lookup Service:

FR => France CA => Canada fr => French en => English

假设输入是以下包含两条记录的 JSON:

[
  {
    "locales": [
      {
        "region": "FR",
        "language": "fr"
      },
      {
        "region": "US",
        "language": "en"
      }
    ]
  },
  {
    "locales": [
      {
        "region": "CA",
        "language": "fr"
      },
      {
        "region": "JP",
        "language": "ja"
      }
    ]
  }
]

Processor 的 "Record Update Strategy" 配置为 "Replace Existing Values",并添加了两个 用户自定义属性:"region" => "/locales[*]/region" 和 "language" => "/locales[*]/language"。

触发时,Processor 会遍历用户自定义属性。首先,它会查找 "/locales[*]/region" 对应的字段, 对于记录中的每个值,该值会被用作 Lookup Service 的键,并被 Lookup Service 返回的结果替换。 示例:第一个 region 是 "FR",该键在 Lookup Service 中对应值 "France",因此记录中的 "FR" 被替换为 "France"。对于上述示例,会产生:

[
  {
    "locales": [
      {
        "region": "France",
        "language": "French"
      },
      {
        "region": "US",
        "language": "English"
      }
    ]
  },
  {
    "locales": [
      {
        "region": "Canada",
        "language": "French"
      },
      {
        "region": "JP",
        "language": "ja"
      }
    ]
  }
]