任何查詢,無論是由Power Query所建立、由您在進階編輯器中手動撰寫,還是使用空白文件輸入,都是由Power Query M 公式語言中的函式和語法所組成。 此查詢會由Power Query引擎解譯和評估,以輸出其結果。 M 文稿可作為評估查詢所需的一組指示。
提示
您可以將 M 腳稿視為描述如何準備數據的配方。
建立 M 腳稿最常見的方式是使用 Power Query 編輯器。 例如,當您連線到數據源,例如 SQL Server 資料庫時,請注意畫面右側有一個稱為 已套用步驟的區段。 本節會顯示查詢中使用的所有步驟或轉換。 從這個意義上說,Power Query 編輯器會做為介面,協助您為之後的轉換建立適當的 M 腳本,並確保您使用的程式代碼有效。
注意
M 文稿會在 Power Query 編輯器中使用,以:
將查詢顯示為一系列步驟,並允許建立或修改新的步驟。
顯示圖表檢視。
上一個影像強調套用的步驟區段,其中包含下列步驟:
來源:建立數據源的連接。 在此情況下,它是 SQL Server 資料庫的連線。
導覽:巡覽至資料庫中的特定數據表。
已移除其他數據行:從數據表中選取要保留的數據行。
已排序的數據列:使用一或多個數據行來排序數據表。
保留頂端數據列:篩選數據表,只保留數據表頂端的一些數據列。
這組步驟名稱是檢視 Power Query 為您建立的 M 腳本的易記方式。 有數種方式可以檢視完整的 M 腳稿。 在 Power Query 中,您可以在 [檢視] 索引標籤中選取 [進階編輯器]。您也可以從 [常用] 索引卷標中的 [查詢] 群組選取 [進階編輯器]。在某些版本的 Power Query 中,您也可以移至 [檢視] 索引卷標,然後從 [版面配置] 群組中,選取 [腳本檢視查詢腳本] 來變更公式列的檢視>,以顯示查詢腳本。
在 [ 套用的步驟 ] 窗格中找到的大部分名稱也會如 M 腳本所示使用。 查詢的步驟是使用 M 語言中稱為 標識符的內容 來命名。 有時候額外的字元會包裝在 M 中的步驟名稱周圍,但這些字元不會顯示在套用的步驟中。 例如 #"Kept top rows",由於這些額外的字元,其分類為 引號標識符 。 引號標識碼可用來允許任何零個或多個 Unicode 字元序列做為標識碼,包括關鍵詞、空格符、批註、運算子和標點符號。 若要深入瞭解 M 語言中的識別碼 ,請移至 語匯結構。
雖然我們建議您使用Power Query 編輯器為您建立所有或大部分的 M 腳稿,但您可以手動新增或修改 M 腳稿的片段。 若要深入瞭解 M 語言,請移至 M 語言的官方文件網站。
注意
M 文稿也稱為 M 程式代碼,是用於任何使用 Power Query M 語言的程式代碼。 在本文的內容中,M 腳本也會參考 Power Query 查詢內找到的程式代碼,並可透過進階編輯器視窗或公式列中的腳本檢視來存取。
Power Query 中的查詢評估
下圖會探索Power Query 中評估查詢時所發生的程式。
在進階編輯器內找到的 M 腳本會提交至 Power Query 引擎。 也包含其他重要資訊,例如認證和數據源隱私權等級。
Power Query 會決定需要從數據源擷取哪些數據,並將要求提交至數據源。
數據源會藉由將要求的數據傳送至 Power Query,以回應來自 Power Query 的要求。
Power Query 會從數據源接收傳入數據,並在必要時使用 Power Query 引擎執行任何轉換。
衍生自上一個點的結果會載入至目的地。
注意
雖然此範例示範具有 SQL 資料庫 做為數據源的查詢,但概念會套用至具有或不含數據源的查詢。
當 Power Query 讀取您的 M 腳稿時,它會透過優化程式執行腳本,以更有效率地評估您的查詢。 在此程式中,它會決定可將查詢中的哪些步驟(轉換)卸除至您的數據源。 它也會決定使用Power Query引擎評估哪些其他步驟。
此優化程式稱為 查詢折疊,Power Query 會嘗試將可能執行推送至數據源,以優化查詢的執行。
重要
系統會遵循 Power Query M 公式語言的所有規則(也稱為 M 語言)。 最值得注意的是, 延遲評估 在優化程序期間扮演著重要的角色。 在此程式中,Power Query 會瞭解需要評估查詢的特定轉換。 Power Query 也瞭解其他轉換不需要評估哪些轉換,因為它們不需要在您的查詢輸出中。