這些 Power Query 最佳實務幫助你提升查詢效能、善用查詢摺疊功能、選擇正確的資料型別、組織轉換,並重用帶有參數和自訂函式的邏輯。 它們適用於 Power Query Desktop 和 Power Query Online 兩種體驗。
選擇正確的連接器
Power Query 提供許多資料連接器。 這些連接器涵蓋了從 TXT、CSV 和 Excel 檔案等資料來源,到資料庫如 Microsoft SQL Server,以及流行的軟體即服務(SaaS)產品如 Microsoft Dynamics 365 和 Salesforce。 如果「 取得資料 」視窗中找不到專用連接器,請使用通用連接器,如 ODBC 或 OLE DB。
當有專用連接器可用時,請選擇該資料來源專用的連接器。 例如,當你連接到 SQL Server 資料庫時,SQL Server 連接器提供的 Get Data 體驗比一般的 ODBC 連接器更好。 SQL Server 連接器也支援如查詢摺疊等效能功能。 欲了解更多,請參考 Power Query 中查詢評估與查詢摺疊的概覽。
每個數據連接器都會遵循標準體驗,如 取得數據中所述。 此標準化體驗具有稱為 「數據預覽」的階段。 在此階段中,您會得到一個使用者友善的視窗來選擇想從數據源取得的數據,如果連接器允許的話,並查看該數據的簡單預覽。 您甚至可以透過 [ 導覽器 ] 視窗,從數據源選取多個數據集。
備註
若要查看 Power Query 中可用連接器的完整清單,請移至 Power Query 中的連接器。
及早過濾資料以提升效能
盡可能盡早篩選資料,以減少 Power Query 在後續轉換中處理的資料列數。 對於支援查詢摺疊的連接器,Power Query 可以將篩選器推回資料來源,詳見 Power Query 中查詢評估與查詢摺疊概覽。 過濾無關資料也會限制資料預覽中顯示的資料。
使用自動篩選選單,顯示欄位中獨立的數值清單,選擇你想保留或過濾掉的數值。使用搜尋欄幫助你找到欄位中的數值。
您也可以利用類型特定的篩選,例如 先前的 來篩選日期、日期時間,或甚至日期時區欄位。
這些類型特定的篩選可協助您建立動態篩選,一律擷取先前 x 秒數、分鐘數、小時、天、周、月、季或年的數據。
備註
若要深入瞭解如何根據數據行的值篩選數據,請移至 依值篩選。
將高成本作業留到最後執行,以提升效能
若要改善 Power Query 編輯器中的預覽效能,請將高成本的作業留到最後執行。 某些操作需要讀取完整資料來源才能回傳 結果 ,因此預覽速度較慢。 例如,如果您執行排序,前幾排已排序的數據可能位於來源數據的末尾。 要回傳任何結果,排序操作必須先讀取 所有 列。
在傳回任何結果之前,其他操作(例如篩選)不需要讀取所有數據。 相反地,它們會以所謂的「串流」方式對數據進行作。 數據會以流的形式傳輸,同時返回結果。 在 Power Query 編輯器中,這類作業只需要讀取足夠的源數據以填入預覽。
可能的話,請先執行這類串流作業,最後再執行任何成本更高的作業。 依此順序執行操作有助於縮短等待預覽的時間,讓您在每次將新步驟新增至查詢時能更快呈現。
在開發查詢時使用資料子集
如果在 Power Query 編輯器中新增步驟很慢,可以使用保留第一列來限制開發查詢時處理的資料量。 在新增所有必要步驟後,移除 「保留第一列」 步驟,讓完成的查詢能處理完整的資料集。
使用正確的數據類型
為每欄設定正確的資料型別,讓 Power Query 能提供特定類型的轉換與篩選功能。 例如,當你選擇日期欄位時,可以在新增欄位選單中使用日期與時間欄位群組中的選項。 如果欄位沒有資料型別集,這些選項就會變成灰色。
類型特定篩選也發生類似的情況,因為它們專屬於特定數據類型。 如果您的數據行未定義正確的資料類型,則無法使用這些類型特定的篩選。
確保您始終使用欄位的正確資料類型。 當您使用結構化數據來源,例如資料庫時,數據類型資訊會從資料庫中找到的數據表架構中取得。 但是,對於 TXT 和 CSV 檔案等非結構化數據源,請務必為來自該數據源的數據行設定正確的數據類型。 根據預設,Power Query 會為非結構化數據源提供自動數據類型偵測。 您可以深入瞭解這項功能,以及如何在 數據類型中協助您。
備註
若要深入了解數據類型的重要性及其使用方式,請移至 [數據類型]。
分析並探索你的資料
在準備資料並加入轉換步驟之前,先啟用 Power Query 資料剖析工具,以發現關於你資料的資訊。
Power Query 提供三種資料分析工具:
| Tool | 它顯示的內容 |
|---|---|
| 柱子品質 | 欄位中有效、包含錯誤或空值的比例。 |
| 柱狀分布 | 每欄數值的頻率與分布。 |
| 柱狀剖面 | 關於某一欄位的詳細統計數據。 |
您也可以與這些功能互動,以協助您準備數據。
備註
若要深入了解數據分析工具,請移至 數據分析工具。
記錄您的工作
透過為步驟、查詢和群組提供有意義的名稱與描述,記錄 Power Query 解決方案。 這些細節讓每次轉換的目的更容易理解和維護。
雖然 Power Query 會在套用的步驟窗格中自動為您建立步驟名稱,但您也可以將步驟重新命名,或在其中任何步驟中新增描述。
備註
若要深入瞭解在套用的步驟窗格中找到的所有可用功能和元件,請移至 使用 [套用的步驟] 清單。
將大型查詢拆分成模組
將大型 Power Query 查詢拆分成較小的參考查詢,使其轉換階段更易理解與維護。 雖然單一查詢可以包含所有所需的轉換與計算,但多步驟的查詢當一個查詢會參考下一個時,管理起來會更容易。
例如,下列查詢有九個步驟,其中包含一個與價格資料表合併步驟。
您可以在 合併與價格資料表 步驟中將此查詢語句分割成兩個。 如此一來,就更容易了解合併之前已套用至銷售查詢的步驟。 若要執行這項作業,請按一下滑鼠右鍵以選取 [與價格合併] 資料表 步驟,然後選取[擷取上一個] 選項。
接著,系統會提示您輸入對話框,為您的新查詢指定名稱。 此步驟有效地將您的查詢分割成兩個查詢。 一個查詢包含合併前的所有步驟。 另一個查詢具有參考您新查詢的初始步驟,以及原始查詢中從合併價格表步驟開始的其餘步驟。
你也可以依照需要使用查詢引用。 保持查詢在不會讓人一看就覺得繁瑣的層級是個好主意。
備註
若要深入了解查詢參考,請移至 了解查詢窗格。
將查詢組織成群組
在查詢欄格中使用群組來保持工作有條理。
群組的唯一用途是協助您通過用作查詢的資料夾來組織工作。 如果需要,您可以在群組內建立群組。 跨群組移動查詢就像拖放一樣簡單。
嘗試為您的群組提供有意義的名稱,對您和您的案例有意義。
備註
若要深入了解查詢窗格中找到的所有可用功能和元件,請移至 了解查詢窗格。
面向未來的查詢
設計查詢以處理預期的來源資料變更,確保未來的更新持續成功。 Power Query 提供轉換功能,使查詢在資料來源中的列、欄或值變動時具有彈性。
定義查詢的範圍,包括它應該做什麼,以及在結構、版面、欄位名稱、資料型態和其他相關元件方面應考慮什麼。
以下轉換能幫助查詢保持對變動的韌性:
| 資料來源情境 | Power Query 轉換 | 瞭解更多資訊 |
|---|---|---|
| 資料列的數量會改變,但你必須移除固定數量的頁腳列。 | 移除底部列 | 依列位置篩選表格 |
| 欄位數量會變動,但查詢只需要特定的欄位。 | 選擇欄位 | 選擇或移除欄位 |
| 欄位數量會改變,但查詢必須只解構特定子集。 | 僅取消樞紐選取的數據行 | 取消列旋轉 |
| 資料型別轉換會產生不符合目標型別的錯誤值。 | 移除包含錯誤的列。 | 處理錯誤 |
使用參數
使用 Power Query 參數來儲存和管理這些值,這些值可以在轉換、資料來源函式和自訂函式中重複使用。 參數讓查詢更容易更新,因為你可以在一個位置更改一個值,而不是編輯每個使用該值的查詢。 兩種常見情境是:
步驟參數:使用參數作為多個由使用者介面驅動的變換參數。
自訂函式參數:從查詢建立一個新函式,並將參數作為自訂函式的參數參考。
建立和使用參數的主要優點包括:
透過 [ 管理參數 ] 視窗集中檢視所有參數。
在多個步驟或查詢中,參數的可重用性。
讓建立自定義函式變得簡單易懂。
您甚至可以在數據連接器的某些自變數中使用參數。 例如,當您連接到 SQL Server 資料庫時,您可以為您的伺服器名稱建立參數。 然後,您可以在 [SQL Server 資料庫] 對話框中使用該參數。
如果您變更伺服器位置,您只需要更新伺服器名稱的參數,並更新您的查詢。
備註
若要深入瞭解如何建立和使用參數,請移至 使用參數。
建立可重複使用的函式
當你需要對不同查詢或值套用相同的轉換組合時,建立一個 Power Query 的自訂函式。 Power Query 的自訂函式會將一組輸入值映射到單一輸出值,並由原生的 Power Query M 公式語言函式與運算子建立。
例如,假設您有多個查詢或值需要同一組轉換。 你可以建立一個自訂函式,之後再針對你選擇的查詢或值來呼叫。 這個自訂功能節省時間,並幫助你在一個集中位置管理所有變形,且可隨時修改。
您可以從現有的查詢和參數建立 Power Query 自定義函式。 例如,假設查詢包含數個編碼作為字串的文字,而您想要建立可以解碼這些值的函式。
首先,您有一個具有做為範例之值的參數。
從該參數,您會建立新的查詢,以套用所需的轉換。 在此情況下,您想要將程式代碼 PTY-CM1090-LAX 分割成多個元件:
- 原點 = PTY
- 目的地 = LAX
- 航空公司 = CM
- 飛行ID = 1090
接著你可以右鍵點擊查詢並選擇 「建立函式」,將該查詢轉換成函式。 最後,您可以將自定義函式叫用至任何查詢或值。
在經過一些額外的轉換之後,您可以看到已達到所需的輸出,並透過自定義函式應用了這類轉換的邏輯。
備註
想了解更多如何在 Power Query 中建立和使用自訂函式,請參閱「自訂函式」。