透過查詢診斷,你可以更了解 Power Query 在 Power BI Desktop 中撰寫和刷新時的功能。 雖然未來我們會擴充此功能,包括新增在完整刷新時使用的功能,但目前你可以用它來了解你發出的查詢類型、撰寫刷新時可能遇到的延遲,以及背景事件的狀況。
要使用 Query Diagnostics,請到 Power Query 編輯器功能區中的 工具 標籤。
預設情況下,查詢診斷可能需要管理員權限才能執行(視 IT 政策而定)。 如果你發現無法執行查詢診斷,請打開 Power BI 桌面的選項頁面,在診斷標籤中,選擇查詢編輯器中的啟用(不需要以管理員身份執行)。 這個選擇限制了你在 Power BI 而非 Power Query 編輯器中進行全面刷新時,無法追蹤診斷結果。 但這也允許你在預覽、撰寫等操作時使用它。
每當你開始診斷時,Power Query 就會開始追蹤你所做的任何評估。 大多數使用者想到的評估是按下刷新鍵,或是第一次取得資料時。 根據連接器的不同,有許多動作可能會引發評估。 例如,使用 SQL 連接器時,當你取得要篩選的值清單時,也會啟動評估——但它不會與使用者查詢關聯,這會被診斷系統呈現。 其他系統產生的查詢可能包括導航器或資料存取體驗。
當你按下 診斷步驟時,Power Query 會針對你正在查看的步驟執行一個特別的評估。 接著它會顯示該步驟的診斷結果,卻不會顯示查詢中其他步驟的診斷結果。 這種評估能讓你更容易對問題有更狹隘的視角。
務必按下停止診斷鍵,如果您正在記錄開始診斷的所有記錄。 停止診斷後,引擎能收集記錄到的痕跡並解析成正確的輸出。 若沒有此步驟,痕跡就會消失。
診斷類型
我們目前提供三種診斷方式,其中一種有兩層細節。
這些診斷中的第一項是主要診斷,包含詳細視圖與摘要視圖。 摘要檢視旨在讓你立即了解查詢時間的使用範圍。 詳細的檢視更深入,逐行查看,通常只有進階使用者才需要進行深入診斷。
在此視圖中,某些功能,如資料來源查詢欄位,目前僅在特定連接器上提供。 未來我們將努力擴大此項報導的範圍。
資料隱私分割區能讓你更了解用於資料隱私的邏輯分割區。
備註
Power Query 可能會執行你可能沒直接觸發的評估。 部分評估的目的是取得元資料,這樣我們可以最佳化查詢,或提供更好的使用者體驗(例如,在篩選列中顯示欄位內不同值的清單)。 其他則可能與連接器如何處理平行評估有關。 同時,如果你在查詢診斷中看到重複且似乎不合常理的查詢,請隨時透過正常的支援管道聯繫我們——您的回饋是我們改進產品的方法。
摘要視圖與詳細檢視
查詢診斷提供兩種視角:摘要與詳細。 摘要視圖將多個相關操作「整合」成單一操作。 在此過程中,將每個操作收集的細節合併,並將專用持續時間相加。 此過程中不會遺失任何資訊。
摘要視圖提供了評估過程中發生的概覽,方便高層次回顧。 如果需要對特定操作進行進一步拆解,你可以查看群組 ID,並在詳細檢視中查看已分組的相應操作。
解釋多重評估
當 Power Query 編輯器刷新時,幕後會做很多工作,試圖提供流暢的使用者體驗。 舉例來說,當你 重新整理預覽時,評估器會執行每個查詢的最後步驟。 但在背景中,它會依序執行 n-1 步、n-2 步,依此類推。 所以如果你回顧過去的步驟,它其實已經存在了。
為了提升效能,目前會進行一些快取,這樣在回頭執行步驟時就不必重跑最終查詢計畫的每個部分。 雖然這種快取對一般撰寫很有用,但因為後續評估會拉取快取資料,所以你不一定能獲得正確的步驟比較資訊。
診斷架構
身份識別碼
在分析錄音結果時,重要的是用 ID 來篩選錄音會話,這樣像「專屬時長 %」這樣的欄位才有意義。
ID 是一個複合識別碼。 它由兩個數字組成——一個在點之前,一個在點後。 第一個數字對所有由單一使用者行動產生的評估都是相同的。 換句話說,如果你按兩次重新整理,在點前面會顯示兩個不同的數字,分別代表不同的使用者活動。 此編號為特定診斷記錄的連續編碼。
第二個數字代表引擎的評估。 此數字在評估排隊的程序生命週期內是連續的。 如果您執行多個診斷記錄會話,這個數字會在不同的會話中持續增長。
總結來說,如果你開始錄影,按下一次「評估」按鈕,然後停止錄影,診斷中會顯示一些 ID。 但因為你只做了一個動作,它們都是 1.1、1.2、1.3 等等。
activityId 與 evaluationId(以點分隔)組合,提供用於單次錄音會話評估的唯一識別碼。
Query
Power Query 編輯器左側窗格內查詢的名稱。
Step
Power Query 編輯器右側窗格中步驟的名稱。 像篩選用的下拉選單通常會和您篩選的步驟相關聯,即使您沒有刷新該步驟。
類別
操作的類別。
資料來源類型
這些資料告訴你你存取的是哪種資料來源,例如 SQL 或 Oracle。
行動
實際執行的手術。 此操作可能包括評估器工作、開啟連線、向資料來源發送查詢等多種功能。
開始時間
行動開始的時間。
結束時間
手術結束的時間。
專屬期間(%)
事件的專屬持續時間欄位是該事件持續運作的時間長短。 這與減去事件開始時間欄和結束時間欄值所產生的「持續時間」值形成對比。 這個「持續時間」值代表事件開始到結束之間的總時間,可能包括事件處於暫停或非活躍狀態,以及其他事件正在消耗資源的時間。
專屬持續時間 % 在給定計算中累加至約100%,以 ID 欄表示。 例如,如果你在 ID 為 1.x 的列上進行篩選,排他持續率百分比加起來大約是 100%。 如果你將診斷表格中各行的排他用時百分比值相加,情況就不會如此。
排他期間
時間的絕對值,而非百分比,用來描述專屬持續時間。 評估的總持續時間(即排除事件非活躍時間的持續時間加上事件非活躍的時間)可以用以下兩種方式之一計算:
找出名為「評估」的行動。結束時間與開始時間之間的差異,即為事件的總持續時間。
將事件中所有操作的最小開始時間減去最長結束時間。 當事件收集的資訊無法涵蓋總持續時間時,會產生一個稱為「追蹤間隙」的操作來彌補這個時間空檔。
Resource
你正在存取的資料資源。 此資源的具體格式取決於資料來源。
資料來源查詢
Power Query 進行一種稱為摺疊(folding)的操作,也就是將查詢的多個部分儘可能地在後端資料來源上執行。 在 DirectQuery 模式(透過 Power Query 啟用)中,只有在 Fold 執行時才會轉換。 在匯入模式下,無法摺疊的變換將在本地執行。
資料來源查詢欄位讓你可以看到對後端資料來源發送的查詢或 HTTP 請求/回應。 當你在編輯器中撰寫查詢時,會產生許多資料來源查詢。 其中一些查詢是實際的最終資料來源查詢,用來呈現預覽。 但其他則可能是資料分析、篩選下拉選單、連接資訊、架構元資料擷取,以及其他許多小查詢。
一般來說,除非有特定理由,否則不必擔心資料來源查詢的數量。 相反地,你應該專注於確保正確的內容被檢索出來。 此欄可能也有助於判斷 Power Query 評估是否完全折疊。
其他資訊
我們的連接器取得了很多資訊。 很多內容都很不整齊,不太符合標準的欄位層級。 這些資訊會被記錄在附加資訊欄的紀錄中。 自訂連接器所記錄的資訊也在此處。
行數
資料來源查詢回傳的列數。 並非所有連接器都啟用。
內容長度
由 HTTP 請求回傳的內容長度,依通常定義。 這個結構並非所有連接器都啟用,對於以區塊形式檢索請求的連接器來說也不準確。
是使用者查詢
一個布林值,表示該查詢是由使用者撰寫並在左側窗格中產生的,還是由其他使用者操作產生。 其他使用者操作還包括選擇篩選器或在取得資料體驗中使用導航器。
路徑
路徑表示在單一評估中,所有操作構成的區間樹中,某一操作的相對路徑。 在樹的頂端(根節點)有一個名為 Evaluation 的單一操作,路徑為 “0”。此評估的開始時間對應整個評估的開始時間。 評估結束時間顯示整個評估完成時刻。 此頂層操作的獨占持續時間為 0,因為它僅作為樹的根來運行。
後續操作從根節點分支出來。 例如,一個操作可能有「0/1/5」作為路徑。 這條路徑可理解為:
- 0:樹根
- 1:目前運作的母體
- 5:現行運作指數
操作「0/1/5」可能有一個子節點,此時路徑的形式為「0/1/5/8」,其中 8 代表子節點的索引。
群組識別碼
如果合併兩個(或多個)操作會導致細節損失,則不會發生。 分組設計用以近似評估過程中執行的「指令」。 在詳細檢視中,多個操作共用一個群組 ID,對應於摘要檢視中被彙總的群組。
與大多數欄位相同,群組 ID 僅在特定評估中相關,並由 ID 欄位過濾。
資料隱私分割結構
身份識別碼
和其他查詢診斷結果的 ID 一樣。 整數部分代表單一活動識別碼,而分數部分代表單一評估。
分區鍵
對應於用作防火牆分割區的查詢/步驟。
防火牆群組
分類說明為何此分割區必須單獨評估,包括分割區的隱私層級細節。
可存取資源
此分割區存取的所有資源路徑清單,通常能唯一識別資料來源。
分割輸入
當前分割區所依賴的分割鍵列表(此列表可用來建立圖)。
Expression
被評估的表達式位於分割區查詢/步驟的最上層。 在某些情況下,它與查詢/步驟同時進行。
開始時間
此分區的評估開始時間。
結束時間
該分割評估結束的時間。
持續時間
由結束時間減去開始時間所得的数值。
排他期間
若假設分割區在單一執行緒中執行,則排他時長即為可歸因於該分割區的「真實」時長。
獨家使用時間 %
專屬期間以百分比計算。
Diagnostics
此欄位僅在查詢診斷「彙整」或「詳細」同時被擷取時顯示,讓使用者能在兩個診斷輸出間對應。
效能計數器結構
當你執行效能計數器時,Power Query 每半秒會快照資源使用情況。 這個快照對於非常快速的查詢沒什麼用,但對於需要大量資源的查詢就很有幫助。
% 處理器時間
處理器在查詢上所花費的時間百分比。 由於多個處理器,這個百分比可能超過100%。
總處理器時間
處理器在查詢上花費的總時間。
每秒 IO 資料位元組數
從資料來源接收到的資料吞吐量速度,以位元組每秒表示。
提交(位元組)
評估所保留的虛擬記憶體數量。
工作集(位元組)
評估所保留的記憶體量。