RouteText

文档中心 › 组件索引 › RouteText

RouteText Processor

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

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

描述

根据一组用户定义的规则路由文本数据。 传入 FlowFile 中的每一行都会与用户定义的属性指定的值进行比较。 将文本与这些用户定义的属性进行比较的机制由“匹配策略”定义。 然后根据这些规则路由数据,分别路由文本的每一行。

标签

attributesroutingtextregexpregexRegular ExpressionExpression Languagecsvfilterlogsdelimitedfindstringsearchfilterdetect

使用场景

从 FlowFile 内容中删除空白行或空行。

filterdropemptyblankremovedeletestrip outlinestext
"Routing Strategy" = "Route to each matching Property Name"
"Matching Strategy" = "Matches Regular Expression"
"Empty Line" = "^$"

自动终止(Auto-terminate)"Empty Line" 关系。
将 "unmatched" 关系连接到流程中的下一个处理器。

从文件中删除特定文本行,例如包含特定单词或行长度超过某个阈值的行。

filterdropemptyblankremovedeletestrip outlinestextexpression language
"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 StrategyRoute to each matching Property Name
  • Route to each matching Property Name — 各行将被路由到其对应表达式求值为 'true' 的每个关系
  • Route to 'matched' if line matches all conditions — 要求所有用户定义的表达式都求值为 'true',该行才被视为匹配
  • Route to 'matched' if lines matches any condition — 要求至少有一个用户定义的表达式求值为 'true',该行才被视为匹配
指定在根据“匹配策略”和用户定义的属性评估传入文本行时如何确定要使用的关系。
Matching Strategy
  • Satisfies Expression — 根据文本是否满足给定的 Expression Language 表达式来匹配行。也就是说,如果属性值作为表达式求值后返回 true,则该行匹配。该表达式可以引用 FlowFile 属性,以及变量 'line'(即待求值行的文本)和 'lineNo'(即被求值的行号,第一行为 1,第二行为 2,依此类推)。
  • Starts With — 根据该行是否以属性值开头来匹配行
  • Ends With — 根据该行是否以属性值结尾来匹配行
  • Contains — 根据该行是否包含属性值来匹配行
  • Equals — 根据该行是否等于属性值来匹配行
  • Matches Regular Expression — 根据该行是否与作为属性值提供的正则表达式完全匹配来匹配行
  • Contains Regular Expression — 根据该行是否包含与作为属性值提供的正则表达式匹配的某些文本来匹配行
指定如何根据用户定义的属性评估每一行传入文本。
Character SetUTF-8对传入文本进行编码的字符集
Ignore Leading/Trailing Whitespacetrue指示在计算行时是否应忽略行开头和结尾的空格。
Ignore Casefalse
  • true
  • false
如果为 true,比较时将不考虑大小写。例如,与 'HELLO' 或 'hello' 匹配将得到相同的结果。如果 'Matching Strategy' 设置为 'Satisfies Expression',则忽略此属性。
Grouping Regular Expression指定一个正则表达式,对每行进行求值以确定该行应放入哪个组。正则表达式必须至少有一个捕获组来定义行的组。如果正则表达式中有多个捕获组,则所有捕获组的值将被连接在一起。两行不会被放入同一个 FlowFile,除非它们具有相同的组值(或两行都不匹配正则表达式)。例如,要将 CSV 文件中的所有行按第一列分组,可以将此值设置为 "(.*?),.*"。具有相同组但不同关系的两行永远不会被放入同一个 FlowFile。

动态属性

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

名称值描述
关系名称要匹配的值将匹配动态属性值中指定值的数据路由到动态属性键中指定的关系。

关系 (Relationships)

名称描述自动终止
original当行已成功路由到 1 个或多个关系时,原始输入文件将被路由到此目标否
unmatched不满足所需的用户定义规则的数据将被路由到此关系否

写入的 FlowFile 属性

名称描述
RouteText.RouteFlowFile 路由到的关系的名称。
RouteText.Group'分组正则表达式'属性中所有捕获组捕获的值。如果未设置此属性或不包含捕获组,则不会添加此属性。

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。