Я хочу преобразовать 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,Outcome,attr
"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}]"
ConvertRecord Config:
Служба контроллера JSONTReeReader Конфигурация:
Конфигурация службы контроллера CSVRecordSetWriter:
Конфигурация службы Avroschmeregistry Contoller:
Авро схема:
{"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"}]}}]}