是否可以使用convertRecord或其他处理器处理null(CSV中不存在列)?
我每天都会收到几个CSv文件。但是问题在于每个CSv中的字段都不相同,有没有一种方法可以将CSV中不存在的所有那些字段的0值发送到数据库中。如果是,请让我不要怎么办?谢谢。
例如:CSV1具有以下字段: 年龄,姓名,地址,值1,值2,值3
(注意:Value3并非每次都存在于所有CSV中,有时它存在于某个时候,有时该列不存在)
CSV2将具有以下内容: 年龄,姓名,地址,值1,值2
并在数据库中表的骨架如下: 年龄,姓名,地址,值1,值2,值3
我不想在数据库中包含空值,后跟一些值。在NiFi中,我的流程是否可以处理“空”并将其替换为0,然后自动插入数据库(每次,如果CSV中没有指定架构中指定的特定字段,则该流程应将0分配给该字段)并吸收数据库中的其他所有内容)
请帮助我实现这一目标。谢谢!
答案 0 :(得分:1)
在这种情况下,您必须在其中定义具有默认值的avro模式。
示例平均模式:
{
"type": "record",
"name": "SQLSchema",
"fields" : [
{"name": "Age", "type": ["null","string"]},
{"name": "Name", "type": ["null","string"]},
{"name": "Address", "type": ["null","int"]},
{"name": "Value1", "type": ["null","int"]},
{"name": "Value2", "type": ["null","int"]},
{"name": "value3", "type": ["null","int"],"default": 0}
]
}
对于value3
字段,我们已将类型定义为null (or) int
,并将默认值定义为0。
如果没有 value3的数据字段,则它将值替换为0 。