Я хочу преобразовать JSON с массивом в формат CSV. Количество элементов в массиве является динамическим для каждой строки. Я попытался использовать этот поток (прикрепил файл потока XML на пост).
GetFile -> ConvertRecord -> UpdateAttribute -> PutFile
Есть ли другие альтернативы?
JSON формат:
{ "LogData": {
"Location": "APAC",
"product": "w1" }, "Outcome": [
{
"limit": "0",
"pri": "3",
"result": "pass"
},
{
"limit": "1",
"pri": "2",
"result": "pass"
},
{
"limit": "5",
"priority": "1",
"result": "fail"
} ], "attr": {
"vers": "1",
"datetime": "2018-01-10 00:36:00" }}
Ожидаемый результат в CSV:
location, product, limit, pri, result, vers, datetime
APAC w1 0 3 pass 1 2018-01-10 00:36:00
APAC w1 1 2 pass 1 2018-01-10 00:36:00
APAC w1 5 1 fail 1 2018-01-10 00:36:00
Выход из присоединенного потока:
LogData, Исход, атр
"MapRecord [{product = w1, Location = APAC}]", "[MapRecord [{limit = 0, result = pass, pri = 3}], MapRecord [{limit = 1, result = pass, pri = 2}] , MapRecord [{limit = 5, result = fail}]] "," MapRecord [{datetime = 2018-01-10 00:36:00, vers = 1}] "
![enter image description here](https://i.stack.imgur.com/yW0CM.jpg)
ConvertRecord - я использую конфигурации JSONTreereader и CSVRecordSSetwriter, как показано ниже:
![enter image description here](https://i.stack.imgur.com/m8S5c.jpg)
Конфигурация службы JSONTreereader Controler:
Конфигурация службы контроллера CSVRecordSetwriter:
Конфигурация службы контроллера AvroschemaRegistry:
![enter image description here](https://i.stack.imgur.com/Hsvbu.jpg)
Авро схема:
{"name": "myschema", "type": "record", "namespace": "myschema", "fields": [{"name": "LogData", "type": {"name": "LogData "," type ":" record "," fields ": [{" name ":" Location "," type ":" string "}, {" name ":" product "," type ":" string "} ]}}, {"name": "Outcome", "type": {"type": "array", "items": {"name": "Outcome_record", "type": "record", "fields" : [{"name": "limit", "type": "string"}, {"name": "pri", "type": ["string", "null"]}, {"name": " результат "," тип ":" строка "}]}}}, {" имя ":" атрибут "," тип ": {" имя ":" атрибут "," тип ":" запись "," поля ": [{"name": "vers", "type": "string"}, {"name": "datetime", "type": "string"}]}}]}