Пример: необработанные данные (формат CSV)
dealid, час, рамка, placementid, soldqty \ п
D1,2, F1, P2,4000 \ п
D1,2, F1, P2,9000 \ п
D1,2, F1, P2,500 \ п
D1,2, F1, P3,400 \ п
Выполнена операция:
var demandData = // Чтение файла CSV
var demandData = demand.as [DemandData]
var deamnddata_agg = demandData.groupBy ("dealid", "hour", "frame", "placementid"). agg (sum ("soldqty") как "soldqty")
deamnddata_agg = deamnddata_agg.groupBy ("dealid", "hour", "frame"). agg (collect_list (map ($ "placementid", $ "soldqty")). alias ("размещение"))
вспомогательный класс:
case case DemandData (dealid: String, час: Int, frame: String, placementid: String, soldqty: BigInt)
Текущий вывод JSON:
{ "Dealid": "D1", "час": 2, "кадр": "F1", "размещение": [{ "Р2": 13500}, { "Р3": 400}]}
Требуется JSON:
{"dealid": "D1", "час": 2, "кадр": "F1", "размещение": {"P2": 13500, "P3": 400}}