从 Fabric 用户数据函数项连接到数据源

可以直接从 Fabric 门户将 Fabric 用户数据函数连接到受支持的 Fabric 数据源。 Fabric 会为你处理身份验证,因此用户数据函数代码只需要引用连接别名,而不是存储凭据或连接详细信息。

在这篇文章中,你将学会如何:

  • 为用户数据函数项创建新连接。
  • 在函数代码中使用新连接。
  • 修改或删除数据连接。

Fabric 用户数据函数中支持的数据源

以下数据源当前支持用于 Fabric 用户数据函数:

注释

还可以连接到Fabric 变量库以将配置设置作为变量在函数中访问。 若要了解如何在函数代码中使用变量库变量,请参阅 从 Fabric 变量库获取变量

先决条件

在连接到数据源之前,需要:

  • 工作区中的 Fabric 用户数据函数项
  • 用户数据函数项的写入权限以管理连接
  • 至少有一个 受支持的数据源(SQL 数据库、仓库、湖仓或镜像数据库)在一个可访问的工作区中。
  • 要连接到的数据源的读取权限(或更高权限)

在 Fabric 门户中添加连接

若要从函数访问数据,需要创建与数据源的连接。 此连接会自动处理身份验证和授权,因此无需在代码中管理连接字符串或凭据。 创建连接后,它会生成一个别名,可以从用户数据函数项中的任何函数引用该别名。

添加连接:

  1. 在 Fabric 门户中,查找并打开用户数据函数项。

  2. 在用户数据函数编辑器的功能区中选择 “管理连接 ”。

    用户数据函数编辑器的屏幕截图,其中突出显示了“管理连接”按钮。

  3. 在打开的窗格中,选择 “添加数据连接”。

    侧窗格的屏幕截图,其中选择了“连接”选项卡且未列出任何连接。

  4. OneLake 目录打开时,浏览数据源列表。

    注释

    该列表经过筛选,仅包含用户帐户有权访问的受支持数据源。 数据源可能位于其他工作区中。 如果找不到要查找的数据源,请确保你有权连接到数据源。

  5. 选择你的数据源,然后选择“连接”。

    OneLake 数据目录的屏幕截图,其中包含数据源列表。

  6. 创建后,新连接将显示在“ 连接 ”选项卡上的侧窗格中。记下为其生成的 别名 。 要使用此别名,从您用户数据函数项中的函数处引用连接。

    “连接”侧窗格的屏幕截图,其中创建了新的数据源连接。

在函数代码中使用连接

创建连接后,可以使用连接的别名在函数代码中引用它。 别名是根据连接到的数据源的名称自动生成的。 在函数中,将此别名添加到 @udf.connection 修饰器,当函数运行时,连接会处理身份验证。

虽然可以将连接代码添加到你从头编写的任何函数,但使用样例提供了一个包含已编写连接代码的起点。 只需修改别名以匹配连接。

若要在代码中使用连接,请使用:

  1. 如果尚未在编辑器中,请打开用户数据函数项并选择“ 开发模式”,然后选择“ 编辑 ”选项卡。

  2. 在功能区上,选择 “插入示例”。

  3. 从下拉列表中选择 “SQL 数据库>从 SQL 数据库中的表读取数据”。

    “插入示例”数据目录的屏幕截图,其中包含数据源列表。

    此示例插入以下代码,用于从 SQL 数据库表读取数据:

    @udf.connection(argName="sqlDB",alias="<alias for sql database>")
    @udf.function()
    def read_from_sql_db(sqlDB: fn.FabricSqlConnection)-> list:
        # Replace with the query you want to run
        query = "SELECT * FROM (VALUES ('John Smith', 31), ('Kayla Jones', 33)) AS Employee(EmpName, DepID);"
    
        # Establish a connection to the SQL database
        connection = sqlDB.connect()
        cursor = connection.cursor()
    
        query.capitalize()
    
        # Execute the query
        cursor.execute(query)
    
        # Fetch all results
        results = []
        for row in cursor.fetchall():
            results.append(row)
    
        # Close the connection
        cursor.close()
        connection.close()
    
        return results
    

    注释

    此示例查询使用 VALUES 子句生成内联测试数据,因此即使数据库尚没有任何表,也可以测试连接。 准备好查询自己的数据时,请将查询替换为引用实际表的查询。

  4. @udf.connection修饰器中的<alias for sql database>替换为您在上一节创建的连接中的别名。

    例如,如果连接别名为 ContosoSalesDat,修饰器将如下所示:

    @udf.connection(argName="sqlDB",alias="ContosoSalesDat")
    @udf.function()
    def read_from_sql_db(sqlDB: fn.FabricSqlConnection)-> list:
        [...]
    
  5. 测试函数 以验证连接是否正常工作。

使用连接测试函数后,可以发布并运行它。 有关详细信息,请参阅 测试用户数据函数

修改或删除连接

可以从 “管理连接 ”窗格修改或删除现有连接。 但是,在进行更改之前,请注意对函数的影响。

修改连接别名

修改现有连接的别名:

  1. 在 Fabric 门户中,打开用户数据函数项。

  2. 选择功能区中的 “管理连接 ”。

  3. “管理连接 ”窗格中,找到要修改的连接,然后选择 “编辑连接 ”图标(铅笔)。

  4. 输入新的别名。

  5. 选择更新以保存更改。

重要

更改连接的别名时,使用旧别名的任何函数在运行时都失败。 必须更新引用旧别名的所有函数代码才能使用新的别名。 若要连接到其他数据源,请创建新的连接,而不是修改现有连接。

删除连接

删除连接:

  1. 在 Fabric 门户中,打开用户数据函数项。

  2. 选择功能区中的 “管理连接 ”。

  3. “管理连接 ”窗格中,找到要删除的连接,然后选择 “删除连接 ”图标(垃圾桶)。

  4. 确认删除。

警告

如果删除函数代码中引用的连接,这些函数在运行时会失败,并出现连接错误。 在删除连接之前,请确保没有函数使用它,或更新函数代码以删除对已删除的连接别名的引用。