訓練
學習路徑
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
本文提供如何處理 M 查詢並將其轉換成數據源要求的基本概觀。
任何查詢,無論是由Power Query所建立、由您在進階編輯器中手動撰寫,還是使用空白文件輸入,都是由Power Query M 公式語言中的函式和語法所組成。 此查詢會由Power Query引擎解譯和評估,以輸出其結果。 M 文稿可作為評估查詢所需的一組指示。
提示
您可以將 M 腳稿視為描述如何準備數據的配方。
建立 M 腳稿最常見的方式是使用 Power Query 編輯器。 例如,當您連線到數據源,例如 SQL Server 資料庫時,請注意畫面右側有一個稱為 已套用步驟的區段。 本節會顯示查詢中使用的所有步驟或轉換。 從這個意義上說,Power Query 編輯器會做為介面,協助您為之後的轉換建立適當的 M 腳本,並確保您使用的程式代碼有效。
注意
M 文稿會在 Power Query 編輯器中使用,以:
上一個影像強調套用的步驟區段,其中包含下列步驟:
這組步驟名稱是檢視 Power Query 為您建立的 M 腳本的易記方式。 有數種方式可以檢視完整的 M 腳稿。 在 Power Query 中,您可以在 [檢視] 索引標籤中選取 [進階編輯器]。您也可以從 [常用] 索引卷標中的 [查詢] 群組選取 [進階編輯器]。在某些版本的 Power Query 中,您也可以移至 [檢視] 索引卷標,然後從 [版面配置] 群組中,選取 [腳本檢視查詢腳本] 來變更公式列的檢視>,以顯示查詢腳本。
在 [ 套用的步驟 ] 窗格中找到的大部分名稱也會如 M 腳本所示使用。 查詢的步驟是使用 M 語言中稱為 標識符的內容 來命名。 有時候額外的字元會包裝在 M 中的步驟名稱周圍,但這些字元不會顯示在套用的步驟中。 例如 #"Kept top rows"
,由於這些額外的字元,其分類為 引號標識符 。 引號標識碼可用來允許任何零個或多個 Unicode 字元序列做為標識碼,包括關鍵詞、空格符、批註、運算子和標點符號。 若要深入瞭解 M 語言中的識別碼 ,請移至 語匯結構。
您透過Power Query 編輯器對查詢所做的任何變更,都會自動更新查詢的 M 腳稿。 例如,使用上一個影像作為起點,如果您將 [保留的前 20 個數據列] 步驟名稱變更為前 20 個數據列,此變更就會在腳本檢視中自動更新。
雖然我們建議您使用Power Query 編輯器為您建立所有或大部分的 M 腳稿,但您可以手動新增或修改 M 腳稿的片段。 若要深入瞭解 M 語言,請移至 M 語言的官方文件網站。
注意
M 文稿也稱為 M 程式代碼,是用於任何使用 Power Query M 語言的程式代碼。 在本文的內容中,M 腳本也會參考 Power Query 查詢內找到的程式代碼,並可透過進階編輯器視窗或公式列中的腳本檢視來存取。
下圖會探索Power Query 中評估查詢時所發生的程式。
注意
雖然此範例示範具有 SQL 資料庫 做為數據源的查詢,但概念會套用至具有或不含數據源的查詢。
當 Power Query 讀取您的 M 腳稿時,它會透過優化程式執行腳本,以更有效率地評估您的查詢。 在此程式中,它會決定可將查詢中的哪些步驟(轉換)卸除至您的數據源。 它也會決定使用Power Query引擎評估哪些其他步驟。 此優化程式稱為 查詢折疊,Power Query 會嘗試將可能執行推送至數據源,以優化查詢的執行。
重要
系統會遵循 Power Query M 公式語言的所有規則(也稱為 M 語言)。 最值得注意的是, 延遲評估 在優化程序期間扮演著重要的角色。 在此程式中,Power Query 會瞭解需要評估查詢的特定轉換。 Power Query 也瞭解其他轉換不需要評估哪些轉換,因為它們不需要在您的查詢輸出中。
此外,當涉及多個來源時,評估查詢時,會考慮每個數據源的數據隱私權層級。 詳細資訊: 數據隱私權防火牆的幕後
下圖示範此優化程式中所發生的步驟。
注意
根據 M 腳稿中使用的轉換和數據源,Power Query 會判斷它是否會串流或緩衝傳入數據。
查詢折疊的目標是將查詢的評估卸除或推送至可計算查詢轉換的數據源。
查詢折疊機制會將 M 腳本轉譯為數據源可解譯和執行的語言,以達成此目標。 然後,它會將評估推送至您的數據源,並將該評估的結果傳送至 Power Query。
此作業通常提供比從數據源擷取所有必要的數據,以及執行 Power Query 引擎中所需的所有轉換更快的查詢執行速度。
當您使用 取得數據體驗時,Power Query 會引導您完成最終可讓您連線到數據源的程式。 這樣做時,Power Query 會使用 M 語言中分類為 存取數據函式的一系列函式。 這些特定函式會使用機制和通訊協定,使用數據源可以理解的語言來聯機到您的數據源。
不過,查詢中的後續步驟是查詢折疊機制嘗試優化的步驟或轉換。 然後,它會檢查是否可以卸除至您的數據源,而不是使用Power Query引擎進行處理。
重要
所有數據源函式通常顯示為 查詢的 [來源 ] 步驟,會以原生語言查詢數據源的數據。 查詢折疊機制會在數據源函式之後套用至查詢的所有轉換上使用,以便將其轉譯並合併成單一數據源查詢,或可卸除至數據源的轉換數目。
根據查詢的結構,查詢折疊機制可能有三個可能的結果:
注意
查詢折迭機制主要適用於結構化數據源的連接器,例如 Microsoft SQL Server 和 OData 摘要。 在優化階段,引擎有時會在查詢中重新排序步驟。
利用具有更多處理資源的數據源,且具有查詢折疊功能,可以加速查詢載入時間,因為處理發生在數據源,而不是 Power Query 引擎。
如需查詢折疊機制三個可能結果的詳細範例,請移至 查詢折疊範例。
如需在 [ 套用的步驟 ] 窗格中找到的查詢折迭指標的相關信息,請移至 查詢折迭指標
訓練
學習路徑
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization