前言
解決問題:合并文件夾中的csv文件
問題難點:csv文件不規(guī)則良狈,在有效數(shù)據(jù)前有部分冗余數(shù)據(jù)矾兜,無法直接使用Power Query的按鈕控件完成
使用工具:Excel
故事概要
話說一代大俠李逍遙迫于生計,創(chuàng)建了個人博客迁酸,但是常年疏于管理。近日仔細研讀《增長黑客》一書后,決定統(tǒng)計下相關數(shù)據(jù)钟鸵,以求更大的發(fā)展,于是從微博后臺下載了相關數(shù)據(jù)涤躲。
觀察數(shù)據(jù)表后棺耍,瞬間產(chǎn)生了2個需求:
- 去除每張表格的前5行
- 下載到一個文件夾中的所有的數(shù)據(jù)進行合并
但是如何將同時完成這兩個需求,得到一份統(tǒng)計表种樱,李逍遙陷入了深深的沉思蒙袍。
解題思路
Excel自帶的Power Query可謂是強大的ETL工具,若能完全掌握其M語言嫩挤,這個問題也是小菜一碟害幅。奈何掌握一門語言談何容易,那么今天筆者也就硬著頭皮試上一試岂昭。仔細觀察需求以现,不難發(fā)現(xiàn)兩個需求單獨實現(xiàn)并不難,都是可視化控件可以搞定的约啊,所以我們可以嘗試做一個函數(shù)邑遏,用于讀取表格,并刪除不需要前5行棍苹,然后在合并文件夾中的文件時討論无宿。具體請聽我娓娓道來。
將單CSV作為樣例枢里,并清理
這里的操作很簡單孽鸡,此處就不多做贅述蹂午,全過程共分兩部:
- 導入數(shù)據(jù)
- 使用控件,刪除前5行彬碱,并將第一行提升為標題
將清理過程封裝成函數(shù)
大家都知道豆胸,所謂函數(shù),就必須要傳參巷疼,所以我們需要創(chuàng)建一個參數(shù)晚胡。由于M語言中函數(shù)Csv.Document
的第一個參數(shù)需要一個二進制文件,所以此處創(chuàng)建的參數(shù)是一個二進制參數(shù)嚼沿。
之后在原有的CSV文件導入過程中引用這個參數(shù)估盘。引用后會報錯,請別急骡尽,這是正常的遣妥。
之后就可以直接創(chuàng)建函數(shù)啦。
將文件夾中的所有文件套用函數(shù)
至此攀细,我們已經(jīng)成功了一半了箫踩,后面就是灑灑水啦~
我們先將下載下的文件放入一個文件夾,然后在Power Query創(chuàng)建一個文件夾的查詢谭贪。
之后增加一個自定義列境钟,使用剛才創(chuàng)建的函數(shù)即可。
最后僅需刪除其他列后俭识,展開自定義列即完成了所有操作慨削。
總結(jié)
至此,李逍遙終于完成了合并數(shù)據(jù)鱼的,但是后期如何分析呢理盆,這又是一個難題。但是他已經(jīng)會了一個99%的人都不知道的Power Query秘技了凑阶。