故事背景:
业务同事想用Power BI分析近两年市场费用。
数据源全部是Excel文件,并且以每月一个Excel文件的方式,统一存放到同一文件夹下面。
重点,每张Excel文件会有多张sheet页,用区分每家分公司的费用信息。
目前,同事直接以每次导入一个Excel文件的方式导入数据,效率极低。所以来找我询问是否有文件夹批量导入Excel的方案?
解决方案:
Power BI的功能十分强大,当然支持文件夹批量导入Excel文件。
其实这里的难点除了批量导入文件夹,还有一点需要大家注意,就是每个Excel文件有多张sheet。
举例:
我在本地一文件夹下面,创建了3个Excel文件,采用的是相同的模板,每个Excel有两张sheet页。
样例内容请看截图:
(Sheet页 Sales Sheet1与 Sales Sheet2格式相同)
操作步骤:
1, 打开Power BI Desktop选择获取数据。
点击【Home】 -> 【Get data】 -> 【All】 -> 【Folder】 -> 【Connect】;
2, 在弹出框中,找到要导入文件夹数据源地址。
点击【Browse For Folder】 -> 选择要导入的文件夹地址 -> 【Ok】;
3, 在弹出框中,可看到导入三张Sales表,文件格式为.xlsx。
选择【Transform Data】进入Power Query数据编辑页面;
4, 在Power Query数据编辑页面中,根据【Folder Path】的路径展示信息,你会发现文件夹下面每个Excel的多张sheet页都被合并在一起,存储在【Content】列中的‘Binary’中。
一般情况,很多有经验的同学会点击【Content】列头的双下箭头获取文件内容。 但是在当前的案例中,这样操作是有问题,原因此操作仅能获取一个Excel中的某一sheet页的数据信息。
那我们怎么正确处理呢?
这时我们就需要借助Power BI自带的M函数来获取多个sheet页的内容。
5,新增一个列,然后通过使用Power BI自带的M函数Excel.Workbook,将文件夹中所有Excel文件的所有sheet页引入新增列中。
点击【Add Column】新增列 -> 【Custom Column】 -> 【New Column Name】定义列名 -> 输入M函数语句=Excel.Workbook([Content],true) -> 【OK】;
6,点击新增列‘左右双箭头’,勾选新增列内容,最后OK确认。
7,展开新增列内容后,
- 可以通过【Name】列查看数据属于哪个Excel文件,
- 可以通过【Custome.Name】或【Custome.Item】看查看数据属于Excel中的哪个Sheet页。
最后我们点击【Custome.Data】的‘左右双箭头’,勾选sheet页所需的内容,最后OK确认。即可将每个Excel文件的每张sheet页内容展示出来。
8,我们可以发现我们需要的每张Sheet页的内容都已经展现出来,最后再把不用的列删除,null值过滤掉,保留需要的信息即可。
今天分享到此结束,记得每天花5分钟来学习Power BI的小技巧,提升你的数据处理效率。
想要了解更多Power BI的小技巧,记得关注我哦!