PowerQuery一步讀取修改日期最新的文件

此系列文章用于講解如何使用Excel或PowerBI中的Power Query功能,讀取文件夾中的特定文件。

文章分為以下幾篇:

一、默認功能讀取修改日期最新的文件

二、一步讀取修改日期最新的文件

三、一步讀取文件名包含特定日期的文件

四、一步讀取文件名日期最新的文件

此系列文章主要用于解決日常會持續(xù)收到更新的數(shù)據(jù)源,且每日的文件命名會產(chǎn)生變化,我們需要用到此數(shù)據(jù)源做報表,又不想每日打開文件復制粘貼的情況。

本文內(nèi)容為:一步讀取修改日期最新的文件

一、背景描述

上一篇使用了默認方法,讀取文件夾中修改日期最新的文件。

好處是直接可以通過點擊操作就完成數(shù)據(jù)的導入設置;壞處是自動生成的查詢內(nèi)容太多,如果我們連接的數(shù)據(jù)源也比較多,會造成管理困難,因此今天來看如何將查詢簡化為只保留1個。

image.png

二、實現(xiàn)步驟

1、首先,仍然新建一個Excel文檔。然后使用“數(shù)據(jù)→獲取數(shù)據(jù)→自其他源→空白查詢”,打開Power Query編輯器

image.png

2、然后,在出來的PQ編輯器中,點擊“主頁→高級編輯器”打開M語言編輯器,然后粘貼上后面的代碼(注意修改圖中截圖紅色字體部分的內(nèi)容,文件夾路徑需注意第一個最后有反斜杠,后面兩個沒有;倒數(shù)第三行的“Item=”的對象是要獲取的表格名稱,Kind是表格類型),點擊完成即可獲得數(shù)據(jù)

image.png
let
    源= Excel.Workbook(
            File.Contents(
                "E:\07 數(shù)據(jù)項目匯總\項目005-PBI讀取最新文件\原始數(shù)據(jù)\" & List.First(
                Table.SelectRows(
                    Folder.Files("E:\07 數(shù)據(jù)項目匯總\項目005-PBI讀取最新文件\原始數(shù)據(jù)"), 
                    let latest = List.Max(
                        Folder.Files("E:\07 數(shù)據(jù)項目匯總\項目005-PBI讀取最新文件\原始數(shù)據(jù)")[Date modified]) in each [Date modified] = latest)[Name])
                ), null, true),
    導航= 源{[Item="示例數(shù)據(jù)",Kind="Sheet"]}[Data]
in
    導航

3、這是獲取到的數(shù)據(jù),可以看到左側的查詢列表就很簡潔,只保留了一個查詢。然后我們通過“將第一行用作標題”等功能,設置正確的標題后,就可以關閉上載到Excel了。

image.png

三、M語言代碼的解析

PQ的界面操作,可以滿足我們80%以上的日常數(shù)據(jù)處理需求;剩下的,我們可以通過調整M代碼來實現(xiàn)(我們的界面操作也會被PQ自動轉換成M代碼)。

我們來看調整后的代碼的解析,思路是可以通過PQ的讀取文件夾功能Folder.Files。

(1)通過Folder.Files("E:\07 數(shù)據(jù)項目匯總\項目005-PBI讀取最新文件\原始數(shù)據(jù)")讀取文件夾的文件列表

(2)通過Table.SelectRows,配合let latest = List.Max(Folder.Files("E:\07 數(shù)據(jù)項目匯總\項目005-PBI讀取最新文件\原始數(shù)據(jù)")[Date modified]) in each [Date modified] = latest 的參數(shù),獲取[[Date modified]即修改日期為最后的文件行,然后通過[Name]獲取到文件名

(3)上述操作本身獲取到的是一個list,所以再通過外包一層List.First函數(shù)獲取到list的第一個值,即文檔名

(4)組裝上路徑即是需要讀取的文件。上述步驟獲得的是當前需要的文件對象(我們給它命名為“源”),實際我們要的是文件里面的某一個表

(5)最后, 通過:導航= 源{[Item="示例數(shù)據(jù)",Kind="Sheet"]}[Data],來獲取最終需要的表格。其中Item的參數(shù)就是表名(sheet的名稱),如果是命名表(即Excel表中通過ctrl+T或ctrl+L創(chuàng)建的超級表,這個名稱就是超級表的名稱,可以通過名稱管理器查看到表名);Kind參數(shù),有“Sheet”和“Talbe”兩個,普通表格使用“Sheet”,命名表使用“Table”。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容