內容

有時會出現預先不知道需要從源數據導入多少行和哪些行的情況。 假設我們必須將文本文件中的數據加載到 Power Query 中,乍一看,這並沒有什麼大問題。 困難在於文件定期更新,明天它可能有不同的數據行數,標題為三,而不是兩行等:

在 Power Query 中導入浮動片段

也就是說,我們不能提前確定,從哪一行開始,具體需要導入多少行。 這是一個問題,因為這些參數是硬編碼在請求的 M 代碼中的。 如果您對第一個文件提出請求(從第 5 個文件開始導入 4 行),那麼它將不再與第二個文件一起正常工作。

如果我們的查詢本身可以確定要導入的“浮動”文本塊的開始和結束,那就太好了。

我要提出的解決方案是基於我們的數據包含一些關鍵字或值可以作為我們需要的數據塊的開始和結束的標記(特徵)的想法。 在我們的示例中,開頭將以單詞開頭的行 SKU, 結尾是一行字 Total. 此行驗證很容易在 Power Query 中使用條件列實現 - 類似於函數 IF (如果) ? 微軟 Excel。

讓我們來看看如何做。

首先,讓我們以標準方式將文本文件的內容加載到 Power Query 中——通過命令 數據 – 獲取數據 – 從文件 – 從文本/CSV 文件 (數據 - 獲取數據 - 從文件 - 從文本/CSV 文件). 如果您將 Power Query 作為單獨的加載項安裝,則相應的命令將顯示在選項卡上 電源查詢:

在 Power Query 中導入浮動片段

和往常一樣,導入時可以選擇列分隔符(在我們的例子中,這是一個製表符),導入後可以去掉自動添加的步驟 修改型 (更改類型),因為現在給列分配數據類型還為時過早:

在 Power Query 中導入浮動片段

現在使用命令 添加列 - 條件列 (添加列 - 條件列)讓我們添加一列,檢查兩個條件——在塊的開頭和結尾——並在每種情況下顯示任何不同的值(例如,數字 1 и 2)。 如果不滿足任何條件,則輸出 :

在 Power Query 中導入浮動片段

點擊後 OK 我們得到以下圖片:

在 Power Query 中導入浮動片段

現在讓我們轉到選項卡。 轉型 並選擇一個團隊 填充 - 向下 (變換-填充-向下) – 我們的一二一二將沿著柱子延伸:

在 Power Query 中導入浮動片段

那麼,正如您可能猜到的那樣,您可以簡單地過濾條件列中的單位——這是我們夢寐以求的數據:

在 Power Query 中導入浮動片段

剩下的就是使用命令將第一行提升到標題 使用第一行作為標題 選項卡 首頁 (首頁 - 使用第一行作為標題) 並通過右鍵單擊其標題並選擇命令來刪除不必要的更多條件列 刪除列 (刪除列):

問題解決了。 現在,當更改源文本文件中的數據時,查詢現在將獨立確定我們需要的數據“浮動”片段的開頭和結尾,並每次導入正確的行數。 當然,這種方法也適用於導入 XLSX 而不是 TXT 文件的情況,以及使用命令一次從文件夾中導入所有文件的情況 數據 - 獲取數據 - 從文件 - 從文件夾 (數據 - 獲取數據 - 從文件 - 從文件夾).

  • 使用 Power Query 組合來自不同文件的表
  • 使用宏和 Power Query 將交叉表重新設計為平面
  • 在 Power Query 中構建項目甘特圖

發表評論