Я получаю файлы CSV разной длины из разных источников. Столбцы в CSV отличаются, за исключением того, что каждый CSV-файл всегда будет иметь столбец Id, который можно использовать для связывания записей в разных CSV-файлах. Одновременно необходимо обработать два таких файла CSV. Процесс состоит в том, чтобы взять столбец Id из первого файла и сопоставить строки во втором CSV-файле и создать третий файл, который содержит содержимое из первого и второго файла. Столбец id может быть повторен в первом файле. Например, приведено ниже. обратите внимание, что в первом файле у меня может быть от 18 до 19 комбинаций различных столбцов данных, поэтому я не могу жестко закодировать преобразование в области данных, и есть вероятность, что новый файл будет добавляться каждый раз. Динамический подход - это то, чего я хотел достичь. Таким образом, однажды написанная логика должна работать, даже если добавлен новый файл. Эти файлы тоже становятся большими.
Примеры файлов приведены ниже.
CSV1.csv
--------
id,col1,col2,col3,col4
1,dat1,data2,data3,data4
2,data5,data6,data6,data6
2,data9,data10,data11,data12
2,data13,data14,data15,data16
3,data17,data18,data19,data20
3,data21,data22,data23,data24
CSV2.csv
--------
id,obectId,resid,remarks
1,obj1,res1,rem1
2,obj2,res2,rem2
3,obj3,res3,rem3
Expected file output -CSV3.csv
---------------------
id,col1,col2,col3,col4,objectid,resid,remarks
1,dat1,data2,data3,data4,obj1,res1,rem1
2,data5,data6,data6,data6,obj2,res2,rem2
2,data9,data10,data11,data12,obj2,res2,rem2
2,data13,data14,data15,data16,obj2,res2,rem2
3,data17,data18,data19,data20,obj3,res3,rem3
3,data21,data22,data23,data24,obj3,res3,rem3
Я думал использовать pluck, чтобы получить значения столбцов для первого файла. Идея заключалась в том, чтобы получить столбцы в преобразовании без его жесткого кодирования. Но я получаю некоторые ошибки. После этого у меня есть задача поиска идентификатора и получения значения из второго файла
{(
using(keys = payload pluck $$)
(
payload map
( (value, index) ->
{
(keys[index]) : value
}
)
)
)}
Я получаю следующую ошибку при использовании pluck
Type mismatch for 'pluck' operator
found :array, :function
required :object, :function
Я думаю об использовании groupBy для идентификатора во втором файле, чтобы облегчить поиск. Но нужны предложения о том, как добавить содержимое в одном преобразовании для формирования 3-го файла.