RouteText Processor
描述
根据一组用户定义的规则路由文本数据。 传入 FlowFile 中的每一行都会与用户定义的属性指定的值进行比较。 将文本与这些用户定义的属性进行比较的机制由“匹配策略”定义。 然后根据这些规则路由数据,分别路由文本的每一行。
标签
使用场景
从 FlowFile 内容中删除空白行或空行。
"Routing Strategy" = "Route to each matching Property Name"
"Matching Strategy" = "Matches Regular Expression"
"Empty Line" = "^$"
自动终止(Auto-terminate)"Empty Line" 关系。
将 "unmatched" 关系连接到流程中的下一个处理器。
从文件中删除特定文本行,例如包含特定单词或行长度超过某个阈值的行。
"Routing Strategy" = "Route to each matching Property Name"
"Matching Strategy" = "Satisfies Expression"
应添加一个名为 "Filter Out." 的额外属性。该值应是一个 Lynxus Expression Language 表达式,可以引用两个变量 (除了 FlowFile 属性之外):`line`(正在评估的文本行);以及 `lineNo`(文件中的行号,从 1 开始)。 该表达式应对任何应被丢弃的行返回 `true`。
例如,要移除任何以 # 符号开头的行,我们可以将 "Filter Out" 设置为 `${line:startsWith("#")}`。
我们还可以通过将 "Filter Out" 设置为 `${lineNo:le(2)}` 来移除前 2 行文本。请注意,我们使用 `le` 函数,因为我们希望行号 小于或等于 `2`,因为行索引是从 1 开始的。
自动终止(Auto-terminate)"Filter Out" 关系。
将 "unmatched" 关系连接到流程中的下一个处理器。
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Routing Strategy | Route to each matching Property Name |
| 指定在根据“匹配策略”和用户定义的属性评估传入文本行时如何确定要使用的关系。 |
| Matching Strategy | |
| 指定如何根据用户定义的属性评估每一行传入文本。 |
| Character Set | UTF-8 | 对传入文本进行编码的字符集 | |
| Ignore Leading/Trailing Whitespace | true | 指示在计算行时是否应忽略行开头和结尾的空格。 | |
| Ignore Case | false |
| 如果为 true,比较时将不考虑大小写。例如,与 'HELLO' 或 'hello' 匹配将得到相同的结果。如果 'Matching Strategy' 设置为 'Satisfies Expression',则忽略此属性。 |
| Grouping Regular Expression | | 指定一个正则表达式,对每行进行求值以确定该行应放入哪个组。正则表达式必须至少有一个捕获组来定义行的组。如果正则表达式中有多个捕获组,则所有捕获组的值将被连接在一起。两行不会被放入同一个 FlowFile,除非它们具有相同的组值(或两行都不匹配正则表达式)。例如,要将 CSV 文件中的所有行按第一列分组,可以将此值设置为 "(.*?),.*"。具有相同组但不同关系的两行永远不会被放入同一个 FlowFile。 |
动态属性
| 名称 | 值 | 描述 |
|---|---|---|
| 关系名称 | 要匹配的值 | 将匹配动态属性值中指定值的数据路由到动态属性键中指定的关系。 |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
original | 当行已成功路由到 1 个或多个关系时,原始输入文件将被路由到此目标 | 否 |
unmatched | 不满足所需的用户定义规则的数据将被路由到此关系 | 否 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
RouteText.Route | FlowFile 路由到的关系的名称。 |
RouteText.Group | '分组正则表达式'属性中所有捕获组捕获的值。如果未设置此属性或不包含捕获组,则不会添加此属性。 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。