Power Query提取嵌套表:合并不同结构CSV并保留全列的技术问询
解决多结构CSV全列追加合并并保留文件名的方法
针对你当前的嵌套表场景,直接用Power Query的M代码就能实现全列保留的追加合并,同时自动添加文件名列,步骤如下:
- 创建处理单个CSV的自定义函数
在Power Query编辑器中,点击「主页」→「新建源」→「空白查询」,把默认的= #table(...)替换成以下代码,然后将查询重命名为fn_ProcessCSV:
(CSVContent as table, FileName as text) as table => let // 给当前CSV表新增文件名列 AddFileNameColumn = Table.AddColumn(CSVContent, "文件名", each FileName) in AddFileNameColumn
- 批量处理嵌套表中的所有CSV
回到你存储嵌套CSV的主表(假设表名是「文件列表」,包含[Name]文件名列和[Content]嵌套表列),添加自定义列:
= Table.AddColumn(文件列表, "处理后数据", each fn_ProcessCSV([Content], [Name]))
这一步会给每个嵌套的CSV表都加上对应的文件名列。
- 合并所有处理后的表(保留全列)
- 先提取所有处理后的表到一个列表:
= Table.SelectColumns(上一步结果, {"处理后数据"})[处理后数据]
- 再用
Table.Combine合并列表里的所有表:
= Table.Combine(上一步得到的列表)
Table.Combine会自动保留所有出现过的列,不同CSV里没有的列会填充null,完美解决UI合并只保留匹配列的问题。
最后直接加载这个合并后的表即可,所有CSV的列都会被保留,同时每行都带对应的文件名标识。
内容的提问来源于stack exchange,提问作者POL
相关产品推荐
相关产品推荐

