針對 Power BI Desktop 中的 DirectQuery 模型進行疑難解答

本文可協助您診斷 Power BI DirectQuery 數據模型在 Power BI Desktop 或 Power BI 服務 中的效能問題。 本文也會說明如何取得詳細資訊,以協助您優化報表。

您應該在Power BI Desktop 中啟動任何效能問題的診斷,而不是在 Power BI 服務 或 Power BI 報表伺服器 中。 效能問題通常取決於基礎數據源的效能層級。 您可以在隔離的 Power BI Desktop 環境中更輕鬆地識別和診斷這些問題,而不需要牽涉到內部部署閘道等元件。

如果您在Power BI Desktop 中找不到效能問題,您可以將調查焦點放在 Power BI 服務 中報表的詳細數據。

在檢視頁面上的許多視覺效果之前,您也應該嘗試將問題隔離到個別視覺效果。

效能分析器

效能分析器 是用來識別整個疑難解答程式效能問題的實用工具。 如果您可以在Power BI Desktop 的頁面上識別單一緩慢的視覺效果,您可以使用 效能分析器 來判斷 Power BI Desktop 傳送至基礎來源的查詢。

您也可以檢視基礎數據源發出的追蹤和診斷資訊。 這類追蹤可以包含查詢執行方式的詳細數據,以及如何加以改善的實用資訊。

即使沒有來源的追蹤,您也可以檢視 Power BI 傳送的查詢及其運行時間。

注意

針對 DirectQuery SQL 型來源,效能分析器 只會顯示 SQL Server、Oracle 和 Teradata 數據源的查詢。

追蹤檔案

根據預設,Power BI Desktop 會將事件記錄在指定的會話期間,記錄到名為 FlightRecorderCurrent.trc 的追蹤檔案。 您可以在 User\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces 的 AppData 資料夾中找到目前><會話的追蹤檔案。

下列 DirectQuery 數據源會寫入 Power BI 將其傳送至追蹤檔案的所有查詢。 記錄檔未來可能支援其他 DirectQuery 來源。

  • SQL Server
  • Azure SQL Database
  • Azure Synapse Analytics (先前稱為 SQL 數據倉儲)
  • Oracle
  • Teradata
  • SAP HANA

若要輕鬆前往 Power BI Desktop 中的追蹤檔案資料夾,請選取 [檔案>選項和設定>選項],然後選取 [診斷]。

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

在 [損毀傾印集合] 下,選取 [開啟損毀傾印/追蹤] 資料夾連結,以開啟< User>\AppData\Local\Microsoft\Power BI Desktop\Traces 資料夾。

流覽至該資料夾的父資料夾,然後開啟 AnalysisServicesWorkspaces 資料夾,其中包含每個 Power BI Desktop 實例的一個工作區子資料夾。 子資料夾名稱具有整數後綴,例如 AnalysisServicesWorkspace2058279583

每個 AnalysisServicesWorkspace 資料夾都包含 Data 子資料夾,其中包含目前 Power BI 會話的追蹤檔案 FlightRecorderCurrent.trc 。 當相關聯的 Power BI Desktop 工作階段結束時,此資料夾就會消失。

您可以使用 SQL Server Profiler 工具開啟追蹤檔案,這是免費 SQL Server Management Studio (SSMS) 下載的一部分。 下載並安裝 SQL Server Management Studio 之後,請開啟 SQL Server Profiler。

Screenshot of SQL Server Profiler window with no highlighted traces.

若要開啟追蹤檔案:

  1. 在 [SQL Server Profiler] 中,選取 [檔案>開啟>追蹤檔案]。

  2. 流覽至或輸入目前 Power BI 會話的追蹤檔案路徑,例如 <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data,然後開啟 FlightRecorderCurrent.trc

SQL Server Profiler 會顯示來自目前會話的所有事件。 下列螢幕快照會醒目提示查詢的事件群組。 每個查詢群組都有下列事件:

  • Query BeginQuery End 事件,代表透過變更 Power BI UI 中的視覺效果或篩選所產生的 DAX 查詢的開始和結束,或從篩選或轉換 Power Query 編輯器 中的數據。

  • 一或多個 和 DirectQuery BeginDirectQuery End 事件組,代表傳送至基礎數據源的查詢,做為評估 DAX 查詢的一部分。

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

多個 DAX 查詢可以平行執行,因此來自不同群組的事件可以交錯。 您可以使用 的值 ActivityID 來判斷哪些事件屬於同一個群組。

下列數據行也感興趣:

  • TextData: 事件的文字詳細數據。 針對 Query BeginQuery End 事件,詳細數據是 DAX 查詢。 針對 DirectQuery BeginDirectQuery End 事件,詳細數據是傳送至基礎來源的 SQL 查詢。 目前選取事件的 TextData 值也會出現在畫面底部的窗格中。
  • EndTime: 事件完成的時間。
  • 持續時間: 持續時間,以毫秒為單位,執行DAX或SQL查詢所花費的時間。
  • 錯誤: 是否發生錯誤,在此情況下,事件也會以紅色顯示。

上圖會縮小一些較不有趣的數據行,讓您更容易看到更有趣的數據行。

請遵循此方法來擷取追蹤,以協助診斷潛在的效能問題:

  1. 開啟單一Power BI Desktop 工作階段,以避免造成多個工作區資料夾的混淆。

  2. 在 Power BI Desktop 中執行一組感興趣的動作。 請再包含一些動作,以確保感興趣的事件會排入追蹤檔案。

  3. 開啟 SQL Server Profiler 並檢查追蹤。 請記住,關閉 Power BI Desktop 會刪除追蹤檔案。 此外,Power BI Desktop 中的進一步動作不會立即出現。 您必須關閉並重新開啟追蹤檔案,才能看到新的事件。

讓個別會話保持相當小,也許 10 秒的動作,而不是數百秒。 這種方法可讓您更輕鬆地解譯追蹤檔案。 追蹤檔案的大小也有限制,因此對於長時間的會話而言,有可能發生早期事件捨棄。

查詢和子查詢格式

Power BI Desktop 查詢的一般格式是針對查詢參考的每個模型數據表使用子查詢。 Power Query 編輯器 查詢會定義子選取查詢。 例如,假設您在 SQL Server 關係資料庫中有下列 TPC-DS 資料表:

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

在 Power BI 視覺效果中,下列運算式會 SalesAmount 定義量值:


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

重新整理視覺效果會產生下圖中的 T-SQL 查詢。 、 ItemDate_dim 模型數據表有三個子查詢Web_Sales。 即使視覺效果只參考四個數據行,每個查詢都會傳回所有模型數據表數據行。

這些著色子查詢是Power Query查詢的確切定義。 這種子查詢的使用不會影響 DirectQuery 支援的數據源效能。 SQL Server 之類的數據源會優化其他數據行的參考。

Power BI 使用此模式的其中一個原因是您可以定義 Power Query 查詢,以使用特定的查詢語句。 Power BI 會使用所提供的查詢,而不需要嘗試重寫查詢。 此模式會限制使用使用通用數據表表達式 (CTE) 和預存程式的查詢語句。 您無法在子查詢中使用這些語句。

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

閘道效能

如需針對網關效能進行疑難解答的資訊,請參閱 針對閘道進行疑難解答 - Power BI

如需 DirectQuery 的詳細資訊,請參閱下列資源:

有任何問題嗎? 嘗試在 Power BI 社群提問