新式數據工作流程中的 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]
如果略過-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];
使用 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。
線魔法的前提條件
初始化會話:在使用
%%tsqlmagic 指令的儲存格中,包含-session參數以建立連線上下文。 例如:%%tsql -artifact ContosoDWH -type Warehouse -session SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];使用線條魔法:初始化會話後,你可以在接下來的格子中使用
%tsql。 線路魔法會使用步驟1建立的連線,不需要你再指定-artifact和-type。 例如:df = %tsql SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];
參考 T-SQL 中的 Python 變數
您也可以在 T-SQL 程式代碼中參考 Python 變數。 若要這樣做,請使用 {} 符號,後面接著 Python 變數的名稱。 例如,如果您有稱為 count的 Python 變數,您可以在 T-SQL 程式代碼中參考它,如下所示:
count = 10
df = %tsql SELECT TOP({count}) * FROM [dw1].[dbo].[Geography];
若要查看完整的語法,請使用 %tsql? 命令。 此命令會顯示 T-SQL magic 命令的說明資訊,包括可用的參數及其描述。
Note
您可以針對數據倉儲或 SQL 資料庫執行完整的 DML 和 DDL 命令,但只對 lakehouse sql 端點執行只讀查詢。
相關內容
若要了解有關 Fabric 筆記本的詳細資訊,請參閱下列文章。
- Questions? 請嘗試詢問 Fabric 社群。
- Suggestions? 貢獻改進 Fabric 的想法。