你可能對參數查詢相當熟悉,因為它們在 SQL 或 Microsoft Query 中被使用。 然而,Power Query 的參數有幾個關鍵差異:
- 參數可用於任何查詢步驟。 除了作為資料過濾器外,參數還可用來指定檔案路徑或伺服器名稱等。
- 參數不會主動要求輸入。 相反地,你可以用 Power Query 快速更改它們的數值。 你甚至可以在 Excel 裡儲存和檢索儲存格的數值。
- 參數會儲存在簡單的參數查詢中,但與其所用的資料查詢是分開的。 建立參數後,你可以根據需要為查詢加入參數。
註 如果你想要另一種方式來建立參數查詢,請參考 Microsoft Query 中的「建立參數查詢」。
建立一個參數
你可以用參數自動更改查詢中的值,避免每次都編輯查詢來更改值。 你只要改變參數值即可。 一旦你建立了參數,它會儲存在一個特殊的參數查詢中,你可以方便地直接從 Excel 中更改。
選擇資料>取得資料>其他來源>啟動 Power Query 編輯器。
在 Power Query 編輯器中,選擇首頁>管理參數 > 新增參數。
在 「管理參數 」對話框中,選擇 「新」。
根據需要設定以下內容:
名稱 這應該反映參數的功能,但盡量保持簡短。 描述 這可以包含任何有助於人們正確使用參數的細節。 必要 執行下列其中一個動作:
任何值 你可以在參數查詢中輸入任何資料型態的任何值。
價值觀列表 你可以透過輸入小格子來限制數值到特定清單。 你也必須在下方選擇 預設值 和 目前值 。
查詢 選擇一個清單查詢,它類似以逗號分隔並以大括號包圍的 列表 結構欄位。
例如,問題狀態欄位可以有三個值:「新」、「進行中」、「關閉」。 你必須事先建立清單查詢,方法是打開進階編輯器 (選擇 Home>進階編輯器) ,移除程式碼範本,輸入查詢清單格式的值清單,然後選擇完成。
當你完成參數建立後,清單查詢會顯示在你的參數值中。類型 這會指定參數的資料型態。 建議價值 如有需要,可加入數值清單或指定查詢以提供輸入建議。 預設值 此功能僅在建議 值 設為「 值清單」時出現,並指定預設的清單項目。 在這種情況下,你必須選擇預設狀態。 現值 根據你在哪裡使用這個參數,如果是空白,查詢可能不會回傳任何結果。 若選擇 「必要 」,則「 當前值 」無法為空。 要建立參數,請選擇 確定。
使用參數來更改資料來源
這裡有一種方法可以管理資料來源位置的變更,並幫助避免刷新錯誤。 例如,假設結構與資料來源相似,建立參數以便輕鬆更改資料來源並防止資料刷新錯誤。 有時候伺服器、資料庫、資料夾、檔名或位置會變。 也許資料庫管理員偶爾會更換伺服器,每月有 CSV 檔案會被放到另一個資料夾,或者你需要輕鬆在開發/測試/生產環境間切換。
步驟 1:建立參數查詢
以下範例中,你有幾個 CSV 檔案,透過匯入資料夾操作匯入 (選擇資料> 從資料夾 Files從資料夾) > 取得資料,從資料夾 C:\DataFilesCSV1 中取得資料>。 但有時會用不同的資料夾放置檔案,例如 C:\DataFilesCSV2。 你可以在查詢中使用參數作為不同資料夾的替換值。
選擇 首頁>管理參數>新參數。
請在 「管理參數 」對話框中輸入以下資訊:
名稱 CSVFileDrop(高壓之子)掉落 描述 替代檔案丟棄位置 必要 是 類型 文字 建議價值 任何值 現值 C:\DataFilesCSV1 選取 [確定]。
步驟 2:將參數加入資料查詢中
- 要設定資料夾名稱為參數,請在 查詢設定中,在 查詢步驟中選擇 「來源」,然後選擇 「編輯設定」。
- 確認 檔案路徑 選項設為 參數,然後從下拉選單選擇你剛建立的參數。
- 選取 [確定]。
步驟 3:更新參數值
資料夾位置剛改變了,現在你只要更新參數查詢就行了。
- 選擇 「資料>連線」&「查詢>」 標籤,右鍵點擊參數查詢,然後選擇 「編輯」。
- 在「目前值」欄位輸入新位置,例如 C:\DataFilesCSV2。
- 選擇 「Home>Close & Load」。
- 要確認結果,請將新資料加入資料來源,然後用更新的參數刷新資料查詢 (選擇 資料>重新整理全部) 。
使用參數來過濾資料
有時你想要一個簡單的方法來更改查詢的篩選條件,以取得不同的結果,而不必編輯查詢內容,也不需要複製同一個查詢的稍微不同版本。 在這個例子中,我們更改日期以方便地更改資料篩選器。
要開啟查詢,請先找到先前從 Power Query 編輯器載入的查詢,選取資料中的一個儲存格,然後選擇查詢>編輯。 更多資訊請參閱 「在 Excel 中建立、載入或編輯查詢」。
在任一欄頭中選擇篩選箭頭來篩選資料,然後選擇篩選命令,例如「 Date/Time Filters>After」。 會出現 篩選列 對話框。
選擇 價值 框左側的按鈕,然後執行以下其中一項:
- 要使用現有參數 ,選擇參數,然後從右側的清單中選擇你想要的參數。
- 要使用新參數,請選擇 新參數,然後建立參數。
在「當前價值」欄位輸入新日期,然後選擇「關閉 &>載入」。
要確認結果,請將新資料加入資料來源,然後用更新的參數刷新資料查詢 (選擇 資料>重新整理全部) 。 例如,將篩選器的值改成不同的日期以查看新的結果。
請在「當前價值」欄位輸入新日期。
選擇 「Home>Close & Load」。
要確認結果,請將新資料加入資料來源,然後用更新的參數刷新資料查詢 (選擇 資料>重新整理全部) 。
使用儲存格值來過濾資料
在這個例子中,查詢參數的值是從你的工作簿中的一個儲存格讀取的。 你不需要更改參數查詢,只要更新儲存格值即可。 例如,你想用第一個字母篩選欄位,但可以輕鬆地將值改成從 A 到 Z 的任意字母。
在工作簿中載入你想篩選查詢的工作表上,建立一個包含兩個儲存格的 Excel 表格:標頭和值。
我的過濾器 G 在 Excel 表格中選擇一個儲存格,然後選擇「從表格/範圍取得資料>>」。Power Query 編輯器會出現。
在右側查詢設定窗格的名稱框中,將查詢名稱改成更有意義,例如 FilterCellValue。
要傳遞資料表中的值,而非資料表本身,請在資料預覽中右鍵點擊該值,然後選擇 「深入檢視」。
注意公式改為= #"Changed Type"{0}[MyFilter]
當你在第 10 步使用 Excel 表格作為篩選條件時,Power Query 會參考 Table 值作為篩選條件。 直接參考 Excel 表格會導致錯誤。選擇「家>」關閉 & 載>入關閉 & 載入至。 你現在有一個名為「FilterCellValue」的查詢參數,可以在第 12 步使用。
在 匯入資料 對話框中,選擇 「僅建立連線」,然後選擇 確定。
用 FilterCellValue 表格中的值來開啟你想篩選的查詢,方法是先從 Power Query 編輯器 載入的,選取資料中的一個儲存格,然後選擇查詢>編輯。 更多資訊請參閱 「在 Excel 中建立、載入或編輯查詢」。
在任一欄位標頭中選擇篩選箭頭來篩選資料,然後選擇篩選指令,例如「文字篩選>器開頭」。 會出現 篩選列 對話框。
在值框中輸入任意值,例如「G」,然後選擇確定。 在這種情況下,該值是 FilterCellValue 表格中值的暫時佔位符,該值會在下一步輸入。
選擇公式列右側的箭頭即可顯示整個公式。 以下是一個公式中濾波條件的範例:
= Table.SelectRows (#“變更型別”,每個文字.以 ([name], “g” 開頭 ) )
選擇篩選器的值。 在公式中選擇「G」。
使用 M Intellisense,輸入你建立的 FilterCellValue 表格的前幾個字母,然後從出現的列表中選取它。
選擇 Home>關閉>關閉 & 載入。
結果
你的查詢現在會用你建立的 Excel 表格中的值來篩選查詢結果。 要使用新值,請在步驟 1 中編輯原始 Excel 表格中的儲存格內容,將「G」改為「V」,然後重新整理查詢。
控制參數查詢的使用
你可以控制參數查詢是否被允許。
- 在 Power Query 編輯器中,選擇檔案>選項與設定>查詢選項>Power Query 編輯器。
- 在左側的窗格中,在 GLOBAL(全域)下,選擇 Power Query 編輯器。
- 在右側面板的 參數中,選擇或清除 「在資料來源與轉換對話框中始終允許參數化」。