PowerQuery中兩種批量處理文件夾下多個(gè)文件的方法

PowerQuery可以輕松批量處理文件夾下的多個(gè)文件粪牲。

【不推薦】直接利用UI完成文件合并處理

最直觀的方法是直接在UI界面就合并所有文件:


直接合并所有文件

這樣處理的好處是簡(jiǎn)便快捷寡壮,然而壞處卻也不少:

首先是強(qiáng)迫癥患者無(wú)法接受Powerquery自動(dòng)生成的查詢和函數(shù):


自動(dòng)生成的查詢和函數(shù)組

其次是自動(dòng)合并的結(jié)果可能會(huì)出現(xiàn)四個(gè)問(wèn)題:


自動(dòng)生成的查詢的問(wèn)題

1.是可能出現(xiàn)莫名其妙的錯(cuò)誤而導(dǎo)致截圖中2所示的文件變少了;
2.文件變少了(示例中其實(shí)有7個(gè)區(qū),但到B1區(qū)就因?yàn)殄e(cuò)誤截止了),原因在于該文件夾下第二個(gè)文件結(jié)構(gòu)和其他文件不太一樣赏半。不過(guò)這個(gè)問(wèn)題通過(guò)刪除結(jié)構(gòu)不一樣的文件后可以解決;
3.最重要的問(wèn)題是如果表格結(jié)構(gòu)混亂淆两,要把結(jié)構(gòu)調(diào)整好断箫,在這種情況下即使是不可能的也是極其困難的。
4.即使把表格結(jié)構(gòu)調(diào)整好了秋冰,一不注意還會(huì)產(chǎn)生另一個(gè)疏漏——把表格結(jié)構(gòu)調(diào)整好之仲义,將第一行提升為表格標(biāo)題后,忘記把其他表格的標(biāo)題行刪除從而導(dǎo)致錯(cuò)誤出現(xiàn)剑勾。不過(guò)埃撵,也可以對(duì)第一個(gè)文件的表格和其他文件的表格進(jìn)行特殊處理,從而忽略掉其他表格標(biāo)題行虽另,但這又會(huì)增加處理的步驟暂刘。

第三,如果文件很多捂刺,數(shù)據(jù)量超級(jí)大谣拣,會(huì)帶來(lái)性能問(wèn)題:因?yàn)槊恳淮尾僮鞫际菍?duì)該文件夾下所有文件的數(shù)據(jù)進(jìn)行處理募寨。

如果沒(méi)有強(qiáng)迫癥情結(jié),每個(gè)數(shù)據(jù)文件結(jié)構(gòu)也很規(guī)整森缠,數(shù)據(jù)量也不大拔鹰,需要調(diào)試的代碼少,可以直接用UI來(lái)處理贵涵。

【推薦】將單個(gè)文件的步驟轉(zhuǎn)化成函數(shù)列肢,再應(yīng)用到其他文件

所以現(xiàn)在我采用另外一種方法來(lái)規(guī)避直接在UI操作產(chǎn)生的問(wèn)題。
1.首先按常規(guī)處理單個(gè)文件的方法宾茂,對(duì)一個(gè)文件進(jìn)行處理瓷马,對(duì)數(shù)據(jù)進(jìn)行清洗和規(guī)范化操作。
2.如何把處理步驟批量應(yīng)用到其他文件上呢跨晴?思路就是把上一步的處理步驟變成一個(gè)函數(shù)欧聘。
3.在步驟1所產(chǎn)生的查詢上右鍵單擊,選擇“創(chuàng)建函數(shù)”:


創(chuàng)建函數(shù)

這時(shí)會(huì)彈出提示說(shuō)沒(méi)有參數(shù)坟奥,是否要?jiǎng)?chuàng)建。不管它拇厢,點(diǎn)“創(chuàng)建”爱谁。將函數(shù)命名(我用的是fnBatch)。下一步我們手動(dòng)修改函數(shù)的參數(shù)孝偎。


未找到參數(shù)的警告

這時(shí)访敌,我們就把步驟1的查詢變成了一個(gè)沒(méi)有參數(shù)的函數(shù)。這個(gè)函數(shù)還沒(méi)法用衣盾,我們必須為其指定參數(shù)寺旺。
4.為fnBatch()函數(shù)手動(dòng)指定參數(shù)。這里我們要思考下势决,步驟1產(chǎn)生的查詢阻塑,有很多步驟,那我們究竟要在哪一步設(shè)置參數(shù)果复,使其能根據(jù)不同的參數(shù)值而獲得不同的結(jié)果呢陈莽?這個(gè)判定相當(dāng)重要。這時(shí)我們要回到我們最初的目標(biāo)上來(lái)——我們要把單個(gè)文件的處理規(guī)則批量應(yīng)用到其他文件上虽抄。那么在PowerQuery中走搁,如何才能引入其他文件呢?那就是文件路徑迈窟。所以我們要把fnBatch()中的文件路徑參數(shù)化私植。在左側(cè)查詢列表選中fnBatch(),點(diǎn)擊菜單欄中的“高級(jí)編輯器”车酣,這時(shí)會(huì)彈出警告曲稼,不用理它索绪,點(diǎn)“確定”。
編輯函數(shù)的警告

我用的參數(shù)名是“file”躯肌≌叽海可以使用任意符合要求的參數(shù)名。
設(shè)置參數(shù).png

設(shè)置好參數(shù)后是下面這個(gè)樣子:


參數(shù)設(shè)置完畢

設(shè)置好參數(shù)后清女,關(guān)閉“高級(jí)編輯器”钱烟。這時(shí)fnBatch()就可以調(diào)用了:
可調(diào)用的函數(shù)

5.調(diào)用函數(shù)。最直觀的調(diào)用方法是把其他幾個(gè)文件的全路徑復(fù)制粘貼到fnBatch()的參數(shù)調(diào)用框里嫡丙,這樣將為每個(gè)文件生成一個(gè)查詢拴袭。換句話說(shuō),有1000個(gè)文件曙博,要調(diào)用1000次拥刻,生成1000個(gè)查詢。顯然這并不是我們想要的父泳。我們想要的是批量調(diào)用般哼。
批量調(diào)用的第一步是把該文件夾下所有文件都引入到PowerQuery中來(lái),那自然是要用到本文開(kāi)始時(shí)所用的Folder.Files()惠窄。
新建一個(gè)文件夾源蒸眠,將所有文件引入PowerQuery,刪除其他無(wú)關(guān)列杆融,只保留FolderPath列和Name兩列楞卡。目的是獲取到每一個(gè)文件的全路徑。下一步我們將通過(guò)合并兩列的方式獲取全路徑脾歇。


保留Name和FolderPath兩列

由于參數(shù)是文件夾全路徑蒋腮,而文件夾全路徑可以通過(guò)將FolderPath列和Name用“&”連接獲取到,因此藕各,這時(shí)我們可以通過(guò)新增一列來(lái)直接調(diào)用fnBatch()函數(shù):

  = Table.AddColumn(篩選的行, "自定義", each fnBatch([Folder Path]&[Name]))

調(diào)用后池摧,在新增的列中每一行都是一個(gè)Table,里邊就是左側(cè)文件的處理結(jié)果激况。


調(diào)用fnbatch函數(shù)的結(jié)果

最后险绘,點(diǎn)擊列名“自定義”旁邊的展開(kāi)符號(hào),自動(dòng)將所有文件的處理結(jié)果合并到一個(gè)表格中誉碴,處理完畢宦棺。

【總結(jié)】后一種方法看似步驟比較繁多,但是因?yàn)樗鼙苊庖幌盗凶詣?dòng)操作帶來(lái)的問(wèn)題黔帕,所以值得為之付出代咸。并且如果操作熟練后,一些步驟可以合并或省略成黄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呐芥,一起剝皮案震驚了整個(gè)濱河市逻杖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌思瘟,老刑警劉巖荸百,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異滨攻,居然都是意外死亡够话,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)光绕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)女嘲,“玉大人,你說(shuō)我怎么就攤上這事诞帐⌒滥幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵停蕉,是天一觀的道長(zhǎng)愕鼓。 經(jīng)常有香客問(wèn)我,道長(zhǎng)慧起,這世上最難降的妖魔是什么菇晃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮完慧,結(jié)果婚禮上谋旦,老公的妹妹穿的比我還像新娘剩失。我一直安慰自己屈尼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布拴孤。 她就那樣靜靜地躺著脾歧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪演熟。 梳的紋絲不亂的頭發(fā)上鞭执,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音芒粹,去河邊找鬼兄纺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛化漆,可吹牛的內(nèi)容都是我干的估脆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼座云,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疙赠!你這毒婦竟也來(lái)了付材?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤圃阳,失蹤者是張志新(化名)和其女友劉穎厌衔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捍岳,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡富寿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祟同。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片作喘。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晕城,靈堂內(nèi)的尸體忽然破棺而出泞坦,到底是詐尸還是另有隱情,我是刑警寧澤砖顷,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布贰锁,位于F島的核電站,受9級(jí)特大地震影響滤蝠,放射性物質(zhì)發(fā)生泄漏豌熄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一物咳、第九天 我趴在偏房一處隱蔽的房頂上張望锣险。 院中可真熱鬧,春花似錦览闰、人聲如沸芯肤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)崖咨。三九已至,卻和暖如春油吭,著一層夾襖步出監(jiān)牢的瞬間击蹲,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工婉宰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歌豺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓心包,卻偏偏與公主長(zhǎng)得像类咧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一轮听、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡(jiǎn)單分配策略的問(wèn)題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 7,818評(píng)論 0 27
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理骗露,服務(wù)發(fā)現(xiàn),斷路器血巍,智...
    卡卡羅2017閱讀 134,701評(píng)論 18 139
  • 我總是那么湊巧地 出現(xiàn)在你來(lái)的時(shí)候 我總是那么湊巧地 你來(lái)的時(shí)候我正好也在 我相信靈魂是存在的 不然怎么會(huì)有琴弦一...
    天堂里的魚(yú)閱讀 239評(píng)論 1 5
  • 我又夢(mèng)到了母親 那個(gè)安詳?shù)脑诖蹇诤腿死挼哪赣H 她說(shuō)的最多的是她的孩子 是她的分散四處的孩子 門(mén)口的大梨樹(shù) 日日陪...
    東方地秀閱讀 530評(píng)論 5 11
  • 記憶中萧锉,我最早接觸的書(shū),是圖書(shū)連環(huán)畫(huà)述寡,就是上面是圖畫(huà)柿隙,下面配有文字的小人書(shū)。在七八十年代鲫凶,兒童圖書(shū)并不像現(xiàn)在那樣泛...
    一泓夜雨閱讀 463評(píng)論 8 4