我正在尝试使用基于嵌套JSON的scala创建新的spark数据框架。我已经定义了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之间的映射,并且相应的数据帧列可以更新为null。
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