LookupRecord Processor
描述
从记录中提取一个或多个字段,并在查找服务中查找这些字段的值。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Record Reader | | 控制器服务 API:RecordReaderFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于读取传入数据的 Controller Service |
| Record Writer | | 控制器服务 API:RecordSetWriterFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于写出记录的 Controller Service |
| Lookup Service | | 控制器服务 API:LookupServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 用于查找每个记录中的值的查找服务 |
| Root Record Path | | 指向 FlowFile 中每个顶级记录内的子记录的 RecordPath。如果指定,额外的 RecordPath 属性 将针对此子记录而不是顶级记录进行求值。这允许在单个 顶级记录中对多个子记录进行丰富处理。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Routing Strategy | route-to-success |
| 指定查找完成后如何路由记录 |
| Record Result Contents | insert-entire-record |
| 当获得包含记录的结果时,此属性确定是将记录本身插入到配置的路径处,还是将记录的内容(即子字段)插入到配置的路径处。 |
| Record Update Strategy | use-property |
| 此属性定义使用查找服务返回的值更新记录时要使用的策略。 |
| Result RecordPath | | 指向应使用查找服务返回的值更新的字段的 RecordPath。如果未指定,则从查找服务返回的值将被忽略,仅用于确定 FlowFile 是否应路由到'matched'或'unmatched'关系。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Cache Size | 0 | 指定要缓存多少查找值/记录。将此属性设置为零表示不进行缓存,每条记录中的每个查找值都将查询表。如果查找表经常变化或必须获取最新数据,请不要使用缓存。 支持表达式语言:是(仅使用环境/系统变量求值) |
动态属性
| 名称 | 值 | 描述 |
|---|---|---|
| 要查找的值 | 有效的 Record Path | 指向字段的 RecordPath,其值将在配置的查找服务中查找 |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
failure | 如果无法丰富某个FlowFile,则未更改的FlowFile将被路由到此关系 | 否 |
success | 如果配置如此,所有记录都将发送到此关系,除非发生故障 | 否 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
mime.type | 将 mime.type 属性设置为Record Writer指定的 MIME 类型 |
record.count | FlowFile中的记录数 |
状态管理
该组件不存储状态。
受限 (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"
}
]
}
]