共用方式為


在 Fabric Python 筆記本中執行 T-SQL 程式代碼

新式數據工作流程中的 T-SQL 和 Python 混合提供強大且靈活的方法,以混合這兩種語言的優點。 SQL 仍然是查詢、篩選和聯結結構化數據的最有效率且可讀的方式,而 Python 則擅長數據轉換、統計分析、機器學習和視覺效果。 透過結合 T-SQL 和 Python,資料工程師可以兩全其美,使他們能夠建立高效、可維護且能夠處理複雜資料處理任務的強大管道。

在 Microsoft Fabric Python 筆記本中,我們引進了稱為 T-SQL magic 命令的新功能。 這項功能可讓您直接在 Python 筆記本中執行 T-SQL 程式代碼,其中包含完整的語法醒目提示和程式碼完成。 這表示您可以在 Python 筆記本中撰寫 T-SQL 程式代碼,而且其執行方式就像是 T-SQL 數據格一樣。 這項功能適用於想要使用 T-SQL 功能的數據工程師,同時仍使用 Python 筆記本的彈性。

在本文中,我們會探索 Microsoft Fabric 筆記本中的 T-SQL magic 命令。 我們將說明如何啟用此命令、指定要使用的倉儲,以及如何將 T-SQL 查詢的結果系結至 Python 變數。

這項功能適用於 Fabric Python 筆記本。 您必須將筆記本中的語言設定為 Python ,並將數據格類型設定為 T-SQL

Important

這項功能目前處於預覽階段。

使用 T-SQL magic 命令查詢網狀架構數據倉儲

若要在 Fabric 筆記本中啟用 T-SQL magic 命令,您必須在儲存格開頭設定 %%tsql magic 命令。 此命令指出該儲存格中的程式代碼應該視為 T-SQL 程式代碼。

在此範例中,我們使用 T-SQL magic 命令來查詢網狀架構數據倉儲。 此指令會採用下列參數:

  • 參數 -artifact 會指定要使用的數據倉儲名稱。 單元格中的 T-SQL 程式代碼會針對 Fabric 中的指定數據倉儲執行。
  • 參數 -type 會指定 Fabric 項目的類型。 針對網狀架構資料倉儲,請使用 Warehouse
  • 參數 -bind 會指定要系結 T-SQL 查詢結果的變數名稱。 在下列範例中,查詢的結果會儲存在稱為 df1的 Python 變數中。 如果您需要將任何轉換套用至 df1 變數,您可以在下一個儲存格中使用 Python 程式代碼。 參數 -bind 是選擇性的,但建議將 T-SQL 查詢的結果系結至 Python 變數。 此參數可讓您使用 Python 程式代碼輕鬆地作和分析結果。
  • 參數 -workspace 是選擇性的,如果倉儲位於不同的工作區中,則會使用 此參數。 如果沒有此參數,筆記本會使用目前的工作區。
%%tsql -artifact dw1 -type Warehouse -bind df1
SELECT TOP (10) [GeographyID],
            [ZipCodeBKey],
            [County],
            [City],
            [State],
            [Country],
            [ZipCode]
FROM [dw1].[dbo].[Geography]

顯示具有數據倉儲之 tsql magic 命令的螢幕快照。

如果略過-artifact-type參數,筆記本會使用目前筆記本中的預設倉庫項目。

使用 T-SQL magic 命令查詢 SQL 資料庫

您也可以使用 T-SQL magic 命令在 Fabric 中查詢 SQL 資料庫。 語法類似於查詢數據倉儲,但 -type 參數必須設定為 SQLDatabase。 參數 -bind 會指定要系結 T-SQL 查詢結果的變數名稱。

在下列範例中,查詢的結果會儲存在稱為 df2的 Python 變數中。

%%tsql -artifact sqldb1 -type SQLDatabase -bind df2
SELECT TOP (10) [AddressID]
      ,[AddressLine1]
      ,[AddressLine2]
      ,[City]
      ,[StateProvince]
      ,[CountryRegion]
      ,[PostalCode]
      ,[rowguid]
      ,[ModifiedDate]
  FROM [SalesLT].[Address];

顯示 tsql magic 命令與 sql database 的螢幕快照。

使用 T-SQL magic 命令查詢 Lakehouse SQL 分析端點

您也可以使用 T-SQL magic 命令來查詢 SQL 分析端點。 語法類似於查詢數據倉儲,但 -type 參數必須設定為 Lakehouse。 參數 -bind 會指定要系結 T-SQL 查詢結果的變數名稱。

在下列範例中,查詢的結果會儲存在稱為 df3的 Python 變數中。

%%tsql -artifact lakehouse1 -type Lakehouse -bind df3
SELECT TOP (10) [ProductID],
      [Name],
      [ProductNumber],
      [Color],
      [StandardCost],
      [ListPrice]
FROM [lakehouse1].[dbo].[Product];

使用 T-SQL 魔術指令作為行內魔術

你不必在完整的 %%tsql 程式碼格中運行 T-SQL,而是可以用一行 %tsql 作為行內魔術來執行。 不過,你必須先建立會話連線。

Important

在使用 %tsql 行魔法之前,你必須執行一個帶有 -session 參數的 %%tsql Cell 魔法指令來初始化 SQL 魔法上下文。 若不使用此設定, %tsql 將產生 SQLMagicContextInitializationException

線魔法的前提條件

  1. 初始化會話:在使用 %%tsql magic 指令的儲存格中,包含 -session 參數以建立連線上下文。 例如:

    %%tsql -artifact ContosoDWH -type Warehouse -session
    SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];
    
  2. 使用線條魔法:初始化會話後,你可以在接下來的格子中使用 %tsql 。 線路魔法會使用步驟1建立的連線,不需要你再指定 -artifact-type 。 例如:

    df = %tsql SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];
    

顯示 tsql magic 命令與 line magic 的螢幕快照。

參考 T-SQL 中的 Python 變數

您也可以在 T-SQL 程式代碼中參考 Python 變數。 若要這樣做,請使用 {} 符號,後面接著 Python 變數的名稱。 例如,如果您有稱為 count的 Python 變數,您可以在 T-SQL 程式代碼中參考它,如下所示:

count = 10

df = %tsql SELECT TOP({count}) * FROM [dw1].[dbo].[Geography];

顯示具有參考 python 變數之 tsql magic 命令的螢幕快照。

若要查看完整的語法,請使用 %tsql? 命令。 此命令會顯示 T-SQL magic 命令的說明資訊,包括可用的參數及其描述。

Note

您可以針對數據倉儲或 SQL 資料庫執行完整的 DML 和 DDL 命令,但只對 lakehouse sql 端點執行只讀查詢。

若要了解有關 Fabric 筆記本的詳細資訊,請參閱下列文章。