#Powerquery 利用M函数合并文件(CSV、Text、Xlsx)

在日常工作中,我们往往会遇到多个文件需要合并的情况,本文一起探讨一下利用M函数合并文件的案例。

由于需要合并的文件的格式不同,也需要选择不同的M函数来进行合并,本文将分享三个格式的合并案例。

首先介绍一下合并步骤,

1:对新建一个新查询,数据源选择为目标文件的路径。

 

2:点击转化数据

 

3:添加一个自定义列

 

 4:利用M函数合并

=Csv.Document([Content],[Delimiter=",", Encoding=936])

5:展开对应TABLE数据即可完成全部操作,合并XLSX以及TEXT格式的文件也是同理可得。

 

解析:此处主要利用两个M函数进行合并操作

Csv.Document 

Csv.Document函数说明:

Csv.Document函数:返回CSV文档的内容作为表

表达式:function(source as any, optional columns as any, optional delimiteras any, optional extraValues as nullable, optional encoding as nullableTextEncoding Type) as table

说明:此函数在使用时需要为其指定四个参数

source是CSV或TXT文件的内容,可以是任意数据类型

columns是可选参数,是要导入的字段个数,如果要导入CSV或TXT文件中的所有字段,则可以省略columns

delimiter是分隔符,为可选参数,如果未指定则使用逗号作为分隔符

extraValues是可选参数,有关extraValues的支持值,请参阅ExtraValues.Type,一般不用

encoding是编码类型,是可选参数

=Csv.Document([Content],[Delimiter=",", Encoding=936])  #CSV文件默认值为936,CSV合并M函数

=Csv.Document(File.Contents(TXT文件路径),[Delimiter=" ", Columns=字段个数,Encoding=1200)#中文TXT文件默认值为1200,TXT合并M函数

无论文件的后缀名是CSV还是TXT,这两类文件都属于文本文件。构成文本文件的内容有两部分,一个是数据内容,另一个是字段与字段间的分隔符。CSV和TXT两种文本文件最大的区别在于他们的分隔符不同。CSV文件固定用“,”进行分隔,而TXT文件的分隔符可以自由设定为任意字符串,但通常情况下默认的TXT文件的分隔符为制表符,也就是按下Tab键时生成的字符。除此之外,为了正确显示中文字符,文本文件中还需要考虑文字编码因素。在Excel中默认的中文CSV文件的文字编码为“936”,而默认的中文TXT文件的文字编码为“1200”。

因为此处是合并csv文件,一般分隔符为",",代码 [Delimiter=",", Encoding=936] , 合并txt文件,此处分割符为 "  ",Encoding=1200。

Excel.workbook函数说明:

Excel.Workbook函数:从Excel工作簿返回工作表的记录

表达式:function(workbook as binary, optional useHeaders as nullablelogical, optional delayTypes as nullable logical) as table

说明:此函数可以将二进制的Excel文件信息转换为表数据,函数需要三个参数

workbook是必选参数,是要导入Excel文件的二进制信息,一般使用File.Contents函数可以将指定路径下的Excel文件保存为二进制信息

useHeaders是可选参数,一般使用null

delayTypes是可选参数,一般使用true

=Excel.Workbook([content])

 其他操作同上

 

总结

利用M函数合并文件,需要根据目标的文件格式,选择不同的M函数,在合并CSV和TXT的文件时,需要注意分隔符和编码格式,来避免展开乱码的问题,而标准XLSX的格式则不需要,直接M函数展开即可。

以上,期待下次的分享。

posted @ 2022-12-26 17:45  simone331  阅读(2116)  评论(0编辑  收藏  举报