前言
解决问题:合并文件夹中的csv文件
问题难点:csv文件不规则,在有效数据前有部分冗余数据,无法直接使用Power Query的按钮控件完成
使用工具:Excel
故事概要
话说一代大侠李逍遥迫于生计,创建了个人博客,但是常年疏于管理。近日仔细研读《增长黑客》一书后,决定统计下相关数据,以求更大的发展,于是从微博后台下载了相关数据。
观察数据表后,瞬间产生了2个需求:
- 去除每张表格的前5行
- 下载到一个文件夹中的所有的数据进行合并
但是如何将同时完成这两个需求,得到一份统计表,李逍遥陷入了深深的沉思。
解题思路
Excel自带的Power Query可谓是强大的ETL工具,若能完全掌握其M语言,这个问题也是小菜一碟。奈何掌握一门语言谈何容易,那么今天笔者也就硬着头皮试上一试。仔细观察需求,不难发现两个需求单独实现并不难,都是可视化控件可以搞定的,所以我们可以尝试做一个函数,用于读取表格,并删除不需要前5行,然后在合并文件夹中的文件时讨论。具体请听我娓娓道来。
将单CSV作为样例,并清理
这里的操作很简单,此处就不多做赘述,全过程共分两部:
- 导入数据
- 使用控件,删除前5行,并将第一行提升为标题
将清理过程封装成函数
大家都知道,所谓函数,就必须要传参,所以我们需要创建一个参数。由于M语言中函数Csv.Document
的第一个参数需要一个二进制文件,所以此处创建的参数是一个二进制参数。
之后在原有的CSV文件导入过程中引用这个参数。引用后会报错,请别急,这是正常的。
之后就可以直接创建函数啦。
将文件夹中的所有文件套用函数
至此,我们已经成功了一半了,后面就是洒洒水啦~
我们先将下载下的文件放入一个文件夹,然后在Power Query创建一个文件夹的查询。
之后增加一个自定义列,使用刚才创建的函数即可。
最后仅需删除其他列后,展开自定义列即完成了所有操作。
总结
至此,李逍遥终于完成了合并数据,但是后期如何分析呢,这又是一个难题。但是他已经会了一个99%的人都不知道的Power Query秘技了。