专栏名称: PowerBI星球
海量干货,帮你轻松上手 Power BI
目录
相关文章推荐
Linux就该这么学  ·  不止是操作系统!Linux ... ·  4 小时前  
Linux就该这么学  ·  开源装机工具 Ventoy 更新 ... ·  4 小时前  
Linux就该这么学  ·  官宣:这所高校禁用 DeepSeek ·  昨天  
Linux就该这么学  ·  Fedora即将登陆Win10/11 ... ·  2 天前  
Linux就该这么学  ·  网络工程师这样用,简直是要榨干 ... ·  3 天前  
51好读  ›  专栏  ›  PowerBI星球

Power Query批量合并Excel,还有这个好用的方法

PowerBI星球  · 公众号  ·  · 2024-08-16 12:04

正文

关于Excel数据的 批量合并 ,之前介绍过很多种情况,一般是导入后展开直接合并,但是对于特殊的数据格式,并不能直接合并,比如一个文件夹中有三个excel文件,分别是下面这样的:

仔细观察这三个表会发现,每个表的列名都是该年的月份,如果简单合并,就丢失了年月维度的信息,并且2021年的列数与其他两年还是不等的,这都导致了不能按照之前的方法简单合并。

之前介绍的方法是利用自定义函数来合并,参考:

PowerQuery批量合并Excel,原来这个方法更好用

这个方法可以实现,但是发布后如果想设置计划刷新时,会有下面这个提示:

此数据集包含一个动态数据源。由于 Power BI 服务中不刷新动态数据源,因此不会刷新此数据集。

关于动态数据源,有些情况可以通过修改M公式解决,但并不总是都能找到方法,上面的情况就不容易解决,所以如果需要设置计划刷新,就不要使用自定义函数的方法了,对于上述表格的情况,其实还有个更简便的合并方法。

以上面的数据为例,我们从头开始,再介绍一下这种情况的批量合并操作的主要过程。

↑ 获取数据>文件夹

↑ 点击“转换数据”进入PowerQuery编辑器

↑ 添加列>自定义列

↑ 自定义列公式:Excel.Workbook([Content],true)

↑ 展开自定义列

然后就可以看到[Data]列(其他无关列可以删除),点击某一行的“Table”,就能看到某个原始表格的数据:


对于这一列不要直接展开,而是添加自定义列,对尚未展开的Table进行逆透视操作:

Table.UnpivotOtherColumns(
[Data],
{"门店"},
"年月","金额"
)


Table.UnpivotOtherColumns是逆透视其他列的M函数,它将[Data]中的每一个表,除“门店”列之外的其他列进行逆透视,逆透视后生成的两列的列名分别命名为“年月”和“金额”。

添加的自定义列的效果如下:

这样每一行的表都是同样的格式了,然后直接展开自定义列,即可完成合并,合并后的表也已经是一维表,并且可以设置计划刷新而不会遇到动态数据源的问题。

这个方法的基本思路是在展开数据前,对数据进行逆透视,让每一行的Table变成同样的格式以后再进行合并。

如果你的数据需要在展开Table前进行一定的操作,都可以参考这个方法,关键是了解一些常用的M函数的用法。

关于PowerQuery批量汇总Excel文件,如果你还遇到其他特殊情况或者解决方案,欢迎留言分享。










请到「今天看啥」查看全文