Share via


原生查詢上的查詢折疊

在 Power Query 中,您可以定義原生查詢,並針對數據源執行它。 使用原生資料庫查詢從資料庫匯入數據一文說明如何使用多個數據源來執行此程式。 但是,使用該文章中所述的程式,您的查詢不會利用後續查詢步驟的任何查詢折疊。

本文示範使用 Value.NativeQuery 函式針對數據源建立原生查詢的替代方法,並將查詢折疊機制保留在查詢後續步驟的作用中。

注意

建議您閱讀有關查詢折疊和查詢折迭指標的檔,以進一步瞭解本文中使用的概念。

支援的數據連接器

下一節所述的方法適用於下列資料連接器:

從數據源 連線 目標

注意

為了展示此程式,本文使用 SQL Server 連接器和 AdventureWorks2019 範例資料庫。 體驗可能會因連接器到連接器而有所不同,但本文會展示如何針對支援的連接器啟用原生查詢的查詢折疊功能的基本概念。

連接到數據源時,請務必連線到您想要執行原生查詢的節點或層級。 針對本文中的範例,該節點將會是伺服器內的資料庫層級。

sql Server 本機實例上 AdventureWorks2019 資料庫的連線 連線 設定對話方塊。

定義連線設定並提供連線的認證之後,系統會帶您前往數據源的瀏覽對話方塊。 在該對話框中,您會看到您可以連線的所有可用物件。

從此清單中,您必須選取執行原生查詢的物件(也稱為目標)。 在此範例中,該對像是資料庫層級。

在 Power Query 的導覽器視窗中,以滑鼠右鍵按兩下導覽器視窗中的資料庫節點,然後選取 [ 轉換資料 ] 選項。 選取此選項會建立資料庫整體檢視的新查詢,這是您需要執行原生查詢的目標。

使用者以滑鼠右鍵按兩下導覽器中資料庫節點的影像,強調 [轉換資料] 選單項。

一旦您的查詢降落在 Power Query 編輯器中,只有 [套用的步驟] 窗格中應該會顯示 [來源 ] 步驟。 此步驟包含一個數據表,其中包含資料庫中所有可用對象的數據表,類似於在 [導覽器] 視窗中顯示它們的方式。

僅使用來源步驟進行查詢。

使用 Value.NativeQuery 函式

此程式的目標是執行下列 SQL 程式代碼,並使用可折疊回來源的 Power Query 套用更多轉換。

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

第一個步驟是定義正確的目標,在此案例中是執行 SQL 程式代碼的資料庫。 一旦步驟有正確的目標,您可以選取該步驟,在此案例中為 [套用步驟] 中的 [來源],然後選取公式列中的 fx 按鈕以新增自定義步驟。 在此範例中,將 Source 公式取代為下列公式:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

此公式最重要的元件是針對函式的四個參數使用選擇性記錄,該 函式的 EnableFolding 記錄欄位設定為 true

使用 Value.NativeQuery 函式和明確 SQL 查詢的新自定義步驟公式。

注意

您可以從官方檔文章深入瞭解 Value.NativeQuery 函式。

輸入公式之後,會顯示警告,要求您啟用原生查詢以執行特定步驟。 您可以按兩下 [繼續],以評估此步驟。

此 SQL 語句會產生只有三個數據列和兩個數據行的數據表。

針對目標資料庫評估的原生查詢。

測試查詢折疊

若要測試查詢的查詢折疊,您可以嘗試將篩選套用至任何數據行,並查看套用步驟一節中的查詢折疊指標是否顯示為折疊步驟。 在此情況下,您可以篩選 DepartmentID 數據行,使值不等於兩個。

篩選 DepartmentID 數據行,只具有不等於兩個的值。

新增此篩選之後,您可以檢查查詢折迭指標是否仍會顯示在這個新步驟中發生的查詢折疊。

篩選步驟顯示為折疊回到已套用步驟一節中的數據源。

若要進一步驗證要傳送至數據源的查詢,您可以以滑鼠右鍵按兩下 [篩選的數據列 ] 步驟,然後選取讀取 [檢視查詢計劃] 選項,以檢查該步驟的查詢計劃

在查詢計劃檢視中,您可以看到畫面左側名稱為 Value.NativeQuery 的節點,該節點具有可讀取 [檢視詳細數據] 的超連結文字。 您可以按下此超連結文字,檢視傳送至 SQL Server 資料庫的確切查詢。

原生查詢會包裝在另一個SELECT語句周圍,以建立原始的子查詢。 Power Query 會盡最大努力建立最佳查詢,因為所使用的轉換和提供的原生查詢。

篩選數據列步驟的查詢計劃。

提示

針對因為查詢折疊而無法收到錯誤的案例,建議您嘗試將步驟驗證為原始原生查詢的子查詢,以檢查是否有任何語法或內容衝突。