Обработка нуля с помощью ConvertRecord в NiFi - PullRequest
0 голосов
/ 06 ноября 2018

Можно ли обработать нуль (столбец не существует в CSV) с помощью convertRecord или другого процессора?

У меня есть несколько файлов CSv, поступающих ежедневно. Но проблема в том, что поля не одинаковы в каждом CSv. Есть ли способ, которым я могу отправить значение 0 в базу данных для всех тех полей, которых нет в CSV. Если да, пожалуйста, дайте мне нет, как? Спасибо.

Пример: CSV1 имеет следующее поле: Возраст, имя, адрес, Значение1, значение2, Value3

( Примечание: Value3 присутствует не во всех CSV каждый раз, иногда он присутствует, а иногда столбец не существует)

CSV2 будет иметь следующее: Возраст, имя, адрес, Значение1, Value2

А в базе данных Скелет таблицы выглядит следующим образом: Возраст, имя, адрес, Значение1, значение2, Value3

Я не хочу, чтобы значения NULL сопровождались каким-либо значением в базе данных. Есть ли способ, которым мой поток в NiFi может обработать «ноль» и заменить его на 0 перед автоматической вставкой в ​​базу данных (каждый раз, когда конкретное поле, указанное в схеме, отсутствует в CSV, поток должен присвоить 0 этому полю и проглотить все остальное в базе данных)

Пожалуйста, помогите мне достичь этого. Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

Для этого случая вам нужно определить схему 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.

Если для поля значение3 нет данных , тогда заменит значение как 0 .

...