新式数据工作流中的 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 数据仓库
若要在 Fabric 笔记本中启用 T-SQL magic 命令,需要在单元格开头设置 %%tsql magic 命令。 此命令指示该单元格中的代码应被视为 T-SQL 代码。
在此示例中,我们使用 T-SQL magic 命令查询 Fabric 数据仓库。 该命令采用以下参数:
- 该
-artifact参数指定要使用的数据仓库的名称。 单元格中的 T-SQL 代码针对 Fabric 中的指定数据仓库执行。 - 该
-type参数指定 Fabric 项的类型。 对于 Fabric 数据仓库,请使用Warehouse。 - 该
-bind参数指定要将 T-SQL 查询的结果绑定到的变量的名称。 在下面的示例中,查询的结果存储在名为df1Python 变量的 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 查询的结果绑定到的变量的名称。
在以下示例中,查询的结果存储在名为 df2Python 变量的 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。
将 T-SQL 魔法命令用作行魔法
声明会话连接后,可以在单个行%%tsql中运行 T-SQL,而不是在完整代码单元%tsql中运行 T-SQL。
在使用 magic 命令的
%%tsql单元格中,包括参数-session。 例如:%%tsql -artifact ContosoDWH -type Warehouse -session SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];然后,
%tsql将在以下单元格中假定-session连接,而无需提供-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 的想法。