此系列文章用于講解如何使用Excel或PowerBI中的Power Query功能扇丛,讀取文件夾中的特定文件。
文章分為以下幾篇:
一、默認(rèn)功能讀取修改日期最新的文件
二程拭、一步讀取修改日期最新的文件
三滤祖、一步讀取文件名包含特定日期的文件
四筷狼、一步讀取文件名日期最新的文件
此系列文章主要用于解決日常會(huì)持續(xù)收到更新的數(shù)據(jù)源,且每日的文件命名會(huì)產(chǎn)生變化匠童,我們需要用到此數(shù)據(jù)源做報(bào)表埂材,又不想每日打開文件復(fù)制粘貼的情況。
本文內(nèi)容為:一步讀取修改日期最新的文件
一汤求、背景描述
上一篇使用了默認(rèn)方法俏险,讀取文件夾中修改日期最新的文件。
好處是直接可以通過點(diǎn)擊操作就完成數(shù)據(jù)的導(dǎo)入設(shè)置扬绪;壞處是自動(dòng)生成的查詢內(nèi)容太多竖独,如果我們連接的數(shù)據(jù)源也比較多,會(huì)造成管理困難挤牛,因此今天來看如何將查詢簡化為只保留1個(gè)莹痢。
二、實(shí)現(xiàn)步驟
1墓赴、首先竞膳,仍然新建一個(gè)Excel文檔。然后使用“數(shù)據(jù)→獲取數(shù)據(jù)→自其他源→空白查詢”诫硕,打開Power Query編輯器
2坦辟、然后,在出來的PQ編輯器中章办,點(diǎn)擊“主頁→高級(jí)編輯器”打開M語言編輯器锉走,然后粘貼上后面的代碼(注意修改圖中截圖紅色字體部分的內(nèi)容滨彻,文件夾路徑需注意第一個(gè)最后有反斜杠,后面兩個(gè)沒有挠日;倒數(shù)第三行的“Item=”的對(duì)象是要獲取的表格名稱疮绷,Kind是表格類型),點(diǎn)擊完成即可獲得數(shù)據(jù)
let
源= Excel.Workbook(
File.Contents(
"E:\07 數(shù)據(jù)項(xiàng)目匯總\項(xiàng)目005-PBI讀取最新文件\原始數(shù)據(jù)\" & List.First(
Table.SelectRows(
Folder.Files("E:\07 數(shù)據(jù)項(xiàng)目匯總\項(xiàng)目005-PBI讀取最新文件\原始數(shù)據(jù)"),
let latest = List.Max(
Folder.Files("E:\07 數(shù)據(jù)項(xiàng)目匯總\項(xiàng)目005-PBI讀取最新文件\原始數(shù)據(jù)")[Date modified]) in each [Date modified] = latest)[Name])
), null, true),
導(dǎo)航= 源{[Item="示例數(shù)據(jù)",Kind="Sheet"]}[Data]
in
導(dǎo)航
3嚣潜、這是獲取到的數(shù)據(jù)冬骚,可以看到左側(cè)的查詢列表就很簡潔,只保留了一個(gè)查詢懂算。然后我們通過“將第一行用作標(biāo)題”等功能只冻,設(shè)置正確的標(biāo)題后,就可以關(guān)閉上載到Excel了计技。
三喜德、M語言代碼的解析
PQ的界面操作,可以滿足我們80%以上的日常數(shù)據(jù)處理需求垮媒;剩下的舍悯,我們可以通過調(diào)整M代碼來實(shí)現(xiàn)(我們的界面操作也會(huì)被PQ自動(dòng)轉(zhuǎn)換成M代碼)。
我們來看調(diào)整后的代碼的解析睡雇,思路是可以通過PQ的讀取文件夾功能Folder.Files萌衬。
(1)通過Folder.Files("E:\07 數(shù)據(jù)項(xiàng)目匯總\項(xiàng)目005-PBI讀取最新文件\原始數(shù)據(jù)")讀取文件夾的文件列表
(2)通過Table.SelectRows,配合let latest = List.Max(Folder.Files("E:\07 數(shù)據(jù)項(xiàng)目匯總\項(xiàng)目005-PBI讀取最新文件\原始數(shù)據(jù)")[Date modified]) in each [Date modified] = latest 的參數(shù)它抱,獲取[[Date modified]即修改日期為最后的文件行秕豫,然后通過[Name]獲取到文件名
(3)上述操作本身獲取到的是一個(gè)list,所以再通過外包一層List.First函數(shù)獲取到list的第一個(gè)值观蓄,即文檔名
(4)組裝上路徑即是需要讀取的文件混移。上述步驟獲得的是當(dāng)前需要的文件對(duì)象(我們給它命名為“源”),實(shí)際我們要的是文件里面的某一個(gè)表
(5)最后侮穿, 通過:導(dǎo)航= 源{[Item="示例數(shù)據(jù)",Kind="Sheet"]}[Data]歌径,來獲取最終需要的表格。其中Item的參數(shù)就是表名(sheet的名稱)撮珠,如果是命名表(即Excel表中通過ctrl+T或ctrl+L創(chuàng)建的超級(jí)表沮脖,這個(gè)名稱就是超級(jí)表的名稱,可以通過名稱管理器查看到表名)芯急;Kind參數(shù)勺届,有“Sheet”和“Talbe”兩個(gè),普通表格使用“Sheet”娶耍,命名表使用“Table”免姿。