PowerQuery如何批量合并csv文件的指定列?
之前介绍过批量合并Excel文件的特定列,方法可以参考:
有星友问,如果有多个csv文件,像上面这篇文章中一样,列的顺序也是不同的,能够用这种方法批量合并吗?
对于这种情况的csv文件,同样可以用PowerQuery实现,不过相对于Excel文件的操作步骤,有两个细节需要调整:
1. csv数据的解析函数是Csv.Document。
在提取Excel数据时,用的是Excel.Workbook,而对于csv文件,就不能再用这个函数了,有专门针对csv文件的函数,它就是Csv.Document,之前这篇文章也介绍过:
批量合并Excel,PowerQuery的这些技巧你应该掌握
具体方式就是添加自定义列时这样来写公式:
Csv.Document([Content],[Delimiter=",", Encoding=936])
2. Csv.Document无法自动提升标题
Excel.Workbook函数可以利用第二个参数true来自动将第一行用作标题,而Csv.Document函数无法自动提升标题,而每个csv文件的列顺序并不完全一致,所以不能直接展开。
虽然Csv.Document函数没有提升标题的参数,但是可以通过与提升标题的函数嵌套使用,来达到自动提升标题的目的。
对于第一步添加的自定义列,在Csv.Document的外层套上Table.PromoteHeaders函数,写法如下:
Table.PromoteHeaders( Csv.Document([Content],[Delimiter=",", Encoding=936]))
这样就将第一行用作标题了,达到了与Excel.Workbook([Content],true)同样的效果,然后再展开自定义列,选择特定的列就可以了。
对于合并Excel文件时遇到的其他情况,比如数据不是从第一行开始的、列名不一致等问题:
如果你处理csv文件时也遇到这些情况,都可以利用上面的处理方式调整后实现数据的批量合并。
PowerBI星球