Apache NiFi 2.x处理器:ValidateCsv 2.3.0

Bundle

org.apache.nifi | nifi-standard-nar

Description

验证 FlowFiles 内容或 FlowFile 属性值是否符合用户指定的 CSV 模式。可参考该处理器的附加文档以获取模式示例。

Tags

csv, schema, validation

Input Requirement

REQUIRED

Supports Sensitive Dynamic Properties

false

ValidateCsv

使用信息

Validate CSV 处理器基于 super-csv 库及 Cell Processors 概念。相关 Java 文档可参考此处。

Cell Processors 不可嵌套(除 Optional 外,它可为可能为 null 的值定义 CellProcessor),且必须以逗号分隔的字符串形式在 Schema 属性中定义。

支持的 Cell Processors 包括:

- ParseBigDecimal  
- ParseBool  
- ParseChar  
- ParseDate  
- ParseDouble  
- ParseInt  
- Optional  
- DMinMax  
- Equals  
- ForbidSubStr  
- LMinMax  
- NotNull  
- Null  
- RequireHashCode  
- RequireSubStr  
- Strlen  
- StrMinMax  
- StrNotNullOrEmpty  
- StrRegEx  
- Unique  
- UniqueHashCode  
- IsIncludedIn  

示例:

Schema 属性: Null, ParseDate(“dd/MM/yyyy”), Optional(ParseDouble())
含义: 输入 CSV 有三列:第一列可为空且无约束,第二列必须为指定格式的日期,第三列必须为 double 类型或空。

Schema 属性: ParseBigDecimal(), ParseBool(), ParseChar(), ParseInt(), ParseLong()
含义: 输入 CSV 有五列:第一列必须为 BigDecimal,第二列为布尔值,第三列为字符,第四列为整数,第五列为长整数。

Schema 属性: Equals(), NotNull(), StrNotNullOrEmpty()
含义: 输入 CSV 有三列:第一列所有值必须相同,第二列所有值不可为 null,第三列所有值不可为 null 或空字符串。

Schema 属性: Strlen(4), StrMinMax(3,5), StrRegex("[a-z0-9\\._]+@[a-z0-9\\.]+")
含义: 输入 CSV 有三列:第一列值长度必须为 4 字符,第二列值长度在 3 到 5 字符之间(含),第三列值需匹配正则表达式(电子邮件格式)。

Schema 属性: Unique(), UniqueHashCode()
含义: 输入 CSV 有两列:第一列所有值必须唯一(值全存于内存),第二列所有值的哈希码必须唯一。

Schema 属性: ForbidSubStr(“test”, “tset”), RequireSubStr(“test”)
含义: 输入 CSV 有两列:第一列值不可包含指定子字符串,第二列值必须包含指定子字符串。


属性配置

  • CSV Source Attribute | 包含待验证 CSV 数据的属性名。若为空,则验证 FlowFile 内容。

Display Name :CSV Source Attribute

Description :包含待验证 CSV 数据的属性名。若为空,则验证 FlowFile 内容。

API Name :CSV Source Attribute

Expression Language Scope :JVM 环境变量及系统属性

Sensitive :false

Required :false

Dependencies

- Validation strategy 设置为 [FlowFile validation]  

  • Delimiter character | 输入数据的分隔符。例如:,

Display Name :Delimiter character

Description :输入数据的分隔符。例如:,

API Name :validate-csv-delimiter

Default Value:,

Expression Language Scope :环境变量及 FlowFile 属性

Sensitive :false

Required :true


  • End of line symbols | 输入数据的行尾符号。例如:\n

Display Name :End of line symbols

Description :输入数据的行尾符号。例如:\n

API Name :validate-csv-eol

Default Value: \n

Expression Language Scope :环境变量及 FlowFile 属性

Sensitive :false

Required :true


  • Header | 输入 FlowFile 是否包含需跳过的表头。

Display Name :Header

Description :输入 FlowFile 是否包含需跳过的表头。

API Name :validate-csv-header

Default Value:true

Allowable Values

- `true`  
- `false`  

Expression Language Scope :不支持

Sensitive :false

Required :true


  • Quote character | 输入数据的引号字符。例如:"

Display Name :Quote character

Description :输入数据的引号字符。例如:"

API Name :validate-csv-quote

Default Value:"

Expression Language Scope :环境变量及 FlowFile 属性

Sensitive :false

Required :true


  • Schema | 验证模式。需以逗号分隔的字符串定义 Cell Processors。允许的处理器:[ParseBigDecimal, ParseBool, ..., IsIncludedIn]。注意:除 Optional 外不可嵌套。若 Header 为 false,则 Schema 必填。

Display Name :Schema

Description :验证模式。需以逗号分隔的字符串定义 Cell Processors。允许的处理器包括:[ParseBigDecimal, ParseBool, ..., IsIncludedIn]。注意:除 Optional 外不可嵌套。若 Header 为 false,则 Schema 必填。

API Name :validate-csv-schema

Expression Language Scope :环境变量及 FlowFile 属性

Sensitive :false

Required :false


  • Validation strategy | 验证策略,决定如何路由输入文件到输出关系。

Display Name :Validation strategy

Description :验证策略,决定如何路由输入文件到输出关系。

API Name :validate-csv-strategy

Default Value:FlowFile validation

Allowable Values:

- `Line by line validation`  
- `FlowFile validation`  

Expression Language Scope :不支持

Sensitive :false

Required :true


  • Include all violations | 若为 true,validation.error.message 属性将包含首条无效行的所有违规信息。注意:启用此功能可能略微降低性能。若为 false,则仅记录首条无效行的首个违规信息。

Display Name :Include all violations

Description :若为 true,validation.error.message 属性将包含首条无效行的所有违规信息。注意:启用此功能可能略微降低性能。若为 false,则仅记录首条无效行的首个违规信息。

API Name :validate-csv-violations

Default Value:

false

Allowable Values

- `true`  
- `false`  

Expression Language Scope :不支持

Sensitive :false

Required :true


关系(Relationships)

Name

Description

invalid

不符合模式的 FlowFile,或无模式/CSV 表头可识别时,路由至此关系。

valid

成功通过验证的 FlowFile 路由至此关系。


写入属性(Writes Attributes)

Name

Description

count.valid.lines

若启用行级验证,表示有效行数。

count.invalid.lines

若启用行级验证,表示无效行数。

count.total.lines

若启用行级验证,表示总行数。

validation.error.message

路由至 invalid 的 FlowFile 的首个错误信息。


原始来源: ValidateCsv - Apache NiFi

原文链接:,转发请注明来源!