在nifi中使用convertrecord处理null

tvmytwxo  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(536)

是否可以使用convertrecord或其他处理器处理null(csv中不存在列)?
我每天都有几个csv文件。但问题是,每个csv中的字段都不相同,是否有一种方法可以将csv中不存在的所有字段的0值发送到数据库中。如果是请让我不怎么?谢谢您。
例如:csv1有以下字段:年龄、姓名、地址、值1、值2、值3
(note:value3 is 不是每次都出现在csv中,有时出现,有时列不存在)
csv2将具有以下内容:年龄、姓名、地址、值1、值2
在数据库中,表的 backbone 如下:年龄、名称、地址、value1、value2、value3
我不希望在数据库中有空值后跟某个值。nifi中的流是否有办法处理“null”并在以自动方式插入数据库之前将其替换为0(每次如果csv中不存在schema中给定的特定字段,流应将0分配给该字段并接收数据库中的所有其他内容)
请帮我实现这个目标。谢谢您!

8i9zcol2

8i9zcol21#

在这种情况下,您必须使用其中的默认值来定义avro模式。
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。

相关问题