Я пытаюсь создать новый фрейм искровых данных, используя скалярную основу для вложенного JSON. Я определил класс case для сопоставления входящего json.
Пример JSON:
{
"mapper":{
"fact":[
{
"vendorLst":["110","120"],
"flag":true,
"upcLst":["10","20","30"],
"startDate":20190101,
"endDate":20190130,
"idVal":"500"
},
{
"vendorLst":["150"],
"startDate":20180101,
"endDate":null,
"subVendorIdValue":null
}
],
"fact":[
{
"vendorLst":["200"],
"startDate":null,
"endDate":null,
"idVal":null
}
]
}
}
Хотел построить фрейм данных как ниже.Когда флаг имеет значение true, необходимо сопоставить каждого поставщика с upc, а когда флаг равен false или недоступен, тогда сопоставление между поставщиком и upc не требуется, и соответствующий столбец фрейма данных может быть обновлен как ноль.
vendorLst flag upcLst startDate endDate idVal
110 TRUE 10 20190101 20190130 500
110 TRUE 20 20190101 20190130 500
110 TRUE 30 20190101 20190130 500
120 TRUE 10 20190101 20190130 500
120 TRUE 20 20190101 20190130 500
120 TRUE 30 20190101 20190130 500
150 FALSE null 20190101 null null
200 FALSE null null null null