关于Excel数据的批量合并,之前介绍过很多种情况,一般是导入后展开直接合并,但是对于特殊的数据格式,并不能直接合并,比如一个文件夹中有三个excel文件,分别是下面这样的:
仔细观察这三个表会发现,每个表的列名都是该年的月份,如果简单合并,就丢失了年月维度的信息,并且2021年的列数与其他两年还是不等的,这都导致了不能按照之前的方法简单合并。
这个方法可以实现,但是发布后如果想设置计划刷新时,会有下面这个提示:
此数据集包含一个动态数据源。由于 Power BI 服务中不刷新动态数据源,因此不会刷新此数据集。
关于动态数据源,有些情况可以通过修改M公式解决,但并不总是都能找到方法,上面的情况就不容易解决,所以如果需要设置计划刷新,就不要使用自定义函数的方法了,对于上述表格的情况,其实还有个更简便的合并方法。
以上面的数据为例,我们从头开始,再介绍一下这种情况的批量合并操作的主要过程。
↑ 获取数据>文件夹
↑ 点击“转换数据”进入PowerQuery编辑器
↑ 添加列>自定义列
↑ 自定义列公式:Excel.Workbook([Content],true)
↑ 展开自定义列
然后就可以看到[Data]列(其他无关列可以删除),点击某一行的“Table”,就能看到某个原始表格的数据:
对于这一列不要直接展开,而是添加自定义列,对尚未展开的Table进行逆透视操作:
Table.UnpivotOtherColumns( [Data], {"门店"}, "年月","金额" )
Table.UnpivotOtherColumns是逆透视其他列的M函数,它将[Data]中的每一个表,除“门店”列之外的其他列进行逆透视,逆透视后生成的两列的列名分别命名为“年月”和“金额”。
添加的自定义列的效果如下:
这样每一行的表都是同样的格式了,然后直接展开自定义列,即可完成合并,合并后的表也已经是一维表,并且可以设置计划刷新而不会遇到动态数据源的问题。
这个方法的基本思路是在展开数据前,对数据进行逆透视,让每一行的Table变成同样的格式以后再进行合并。
如果你的数据需要在展开Table前进行一定的操作,都可以参考这个方法,关键是了解一些常用的M函数的用法。
关于PowerQuery批量汇总Excel文件,如果你还遇到其他特殊情况或者解决方案,欢迎留言分享。
如果你想深入学习Power BI,欢迎加入PowerBI星球学习社群,获取更多学习资源,和6k+ 深度学习者一起精进~