Share via


Power BI Desktop 中的查詢折疊指引

本文的目標是在Power BI Desktop中開發模型的數據模型工具。 它提供最佳作法指引,說明何時及如何達成 Power Query 查詢折疊。

查詢折疊 是 Power Query 查詢產生可擷取及轉換源數據的單一查詢語句的能力。 如需詳細資訊,請參閱 Power Query查詢折疊

指引

查詢折疊指引會根據模型模式而有所不同。

針對 DirectQuery雙重儲存模式數據表,Power Query 查詢必須達到查詢折疊。

針對匯入數據表,可以達成查詢折疊。 當查詢是以關係型來源為基礎,以及是否可以建構單一 SELECT 語句時,您可以藉由確保查詢折迭發生來達到 最佳數據重新整理效能 。 如果 Power Query 混搭引擎仍然需要處理轉換,您應該努力將它需要執行的工作降到最低,特別是針對大型語意模型(先前稱為數據集)。

下列點符清單提供特定指引。

  • 盡可能委派對數據源的處理:當無法折疊 Power Query 查詢的所有步驟時,請探索防止查詢折疊的步驟。 可能的話,請依序移動稍後的步驟,以便將其納入查詢折疊。 請注意,Power Query 混搭引擎在產生來源查詢時,可能足夠聰明,以重新排序查詢步驟。

    對於關係型數據源,如果防止查詢摺疊的步驟可以在單一 SELECT 語句或預存程式的程式邏輯中達成,請考慮使用原生 SQL 查詢,如下所述。

  • 使用原生 SQL 查詢:當 Power Query 查詢從關係型來源擷取數據時,某些來源可以使用原生 SQL 查詢。 查詢實際上可以是任何有效的語句,包括預存程序執行。 如果語句產生多個結果集,則只會傳回第一個結果集。 參數可以在語句中宣告,建議您使用 Value.NativeQuery M 函式。 此函式的設計目的是安全地且方便地傳遞參數值。 請務必瞭解 Power Query 混搭引擎無法折疊後續的查詢步驟,因此您應該在原生查詢語句中包含所有或一樣多的轉換邏輯。

    使用原生 SQL 查詢時,您需要記住兩個重要考慮:

    • 對於 DirectQuery 模型數據表,查詢必須是 SELECT 語句,而且無法使用通用數據表運算式 (CTE) 或預存程式。
    • 累加式重新整理無法使用原生 SQL 查詢。 因此,它會強制 Power Query 混搭引擎擷取所有源數據列,然後套用篩選以判斷累加變更。

    重要

    原生 SQL 查詢可能比擷取數據還要多。 任何有效的語句都可以執行(而且可能多次),包括修改或刪除數據的語句。 請務必套用最低許可權原則,以確保用來存取資料庫的帳戶只具有必要數據的讀取許可權。

  • 準備和轉換來源中的數據:當您識別某些 Power Query 查詢步驟無法折疊時,可能會套用數據源中的轉換。 藉由撰寫以邏輯方式轉換源數據的資料庫檢視,即可達成轉換。 或者,藉由在Power BI查詢數據之前,以實際方式準備和具體化數據。 關係型數據倉儲是備妥數據的絕佳範例,通常是由組織數據預先整合的來源所組成。

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