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