Скажем, у меня есть несколько CSV (все в одной папке), которые мне нужно добавить / объединить в одну таблицу Excel, но:
- порядок столбцов меняется в некоторых CSV,
- и заголовки в некоторых CSV различаются (по любой причине) и требуют изменения / переименования.
Первый CSV:
a,c,e,d,b
1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
Второй CSV:
ALPHA,b,c,d,e
4,4,4,4,4
5,5,5,5,5
6,6,6,6,6
Третий CSV:
a,b,charlie,d,e
7,7,7,7,7
8,8,8,8,8
9,9,9,9,9
10,10,10,10,10
Если родительская папка (содержащая мои CSV) имеет значение "C:\Users\user\Desktop\changing csvs\csvs"
,тогда этот код M
должен помочь мне достичь того, что мне нужно:
let
renameMap = [ALPHA = "a", charlie = "c"],
filesInFolder = Folder.Files("C:\Users\user\Desktop\changing csvs\csvs"),
binaryToCSV = Table.AddColumn(filesInFolder, "CSVs", each
let
csv = Csv.Document([Content], [Delimiter = ",", Encoding = 65001, QuoteStyle = QuoteStyle.Csv]),
promoteHeaders = Table.PromoteHeaders(csv, [PromoteAllScalars = true]),
headers = Table.ColumnNames(promoteHeaders),
newHeaders = List.Transform(headers, each Record.FieldOrDefault(renameMap, _, _)),
renameHeaders = Table.RenameColumns(promoteHeaders, List.Zip({headers, newHeaders}))
in
renameHeaders
),
append = Table.Combine(binaryToCSV[CSVs])
in
append
Вам нужно изменить путь к папке в коде, чтобы он был в вашей системе.
Что касается этой строки renameMap = [ALPHA = "a", charlie = "c"],
, мне нужно было изменить "ALPHA"
на "a"
и "charlie"
на "c"
в моем случае, но вам нужно заменить на любоестолбцы нужно переименовать в вашем случае.(Добавьте столько заголовков, которые необходимо переименовать.)
Эта строка append = Table.Combine(binaryToCSV[CSVs])
будет добавлять таблицы друг к другу (чтобы получить одну таблицу).Он должен автоматически обрабатывать различия в порядке столбцов.Если в одном из моих CSV-столбцов есть какие-то мошеннические столбцы (например, скажем, был столбец f
, который я не заметил), то в моей финальной таблице будет столбец f
, хотя и с некоторыми nulls
/ blanks -именно поэтому важно, чтобы все переименования были выполнены до этой строки.
После объединения вы, очевидно, можете делать с таблицей все, что еще нужно.
Попробуйте проверить, работает ли он в вашем случае.