在 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 数据仓库

若要在 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]

显示包含数据仓库的 tsql magic 命令的屏幕截图。

如果跳过了参数 -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];

显示 sql 数据库的 tsql magic 命令的屏幕截图。

使用 T-SQL magic 命令查询 lakehouse SQL 分析终结点

还可以使用 T-SQL magic 命令查询 SQL 分析终结点。 语法类似于查询数据仓库,但 -type 参数必须设置为 Lakehouse

将 T-SQL 魔法命令用作行魔法

声明会话连接后,可以在单个行%%tsql中运行 T-SQL,而不是在完整代码单元%tsql中运行 T-SQL。

  1. 在使用 magic 命令的 %%tsql 单元格中,包括参数 -session。 例如:

    %%tsql -artifact ContosoDWH -type Warehouse -session
    SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];
    
  2. 然后,%tsql将在以下单元格中假定-session连接,而无需提供-artifact-type。 例如,下面的行命令允许运行快速查询,而无需创建完整的代码单元。

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

显示具有行内魔法的 tsql 魔法命令的截图。

在 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 笔记本的详细信息,请参阅以下文章。