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

Fabric 用户数据函数通过使用 Fabric 门户中的管理连接功能,为支持的 Fabric 数据源和条目提供连接。 此功能允许连接到 Fabric 数据源,而无需创建连接字符串或管理访问凭据。 对于不作为数据源的 Fabric 项,可以在函数中安全地连接这些项。

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

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

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

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

为用户数据函数项创建新连接

添加的任何数据连接都与用户数据函数项相关联,并且可以在任何函数的代码中引用。 若要遵循本指南,需要现有的 Fabric 用户数据函数项和现有的 Fabric 数据源。

1.从 Functions 门户访问“管理连接”功能

“开发”模式下,在 Functions 门户编辑器的功能区中查找并选择“ 管理连接 ”。

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

打开的窗格包含你创建的任何数据连接。 选择“添加数据连接”以创建新连接。

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

2.从 OneLake 目录选择数据连接

选择“添加数据连接”时,OneLake 目录将打开,其中包含用户帐户有权访问的所有数据源的列表。 该列表经过筛选,仅包含受支持的数据源,其中一些数据源可能位于其他工作区中。

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

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

注释

如果找不到要查找的数据源,请确保你有权连接到数据源。 或者,请确保使用受支持的数据源,如本文开头所列。

创建后,所选数据源的新连接将显示在“连接”选项卡的侧窗格中。看到连接时,请记下为其生成的“别名字段”。 需要使用此别名从用户数据函数项中的任何函数引用连接。

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

3.在函数代码中使用连接别名

回到门户编辑器后,需要向代码添加在 Manage Connections 选项卡中创建的连接的别名。 此别名是根据连接到的 Fabric 项的名称自动创建的。

在本例中,我们将使用一个名为“从 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

注释

虽然此示例连接到 SQL 数据库,但它不需要数据库中的架构或数据才能运行。

若要使用你创建的数据连接,请修改此示例中的以下行:@udf.connection(argName="sqlDB",alias="<alias for sql database>"),方法是将 alias 的值替换为从 Manage Connections 菜单获取的值。 以下代码显示具有值 ContosoSalesDat 的此示例:

@udf.connection(argName="sqlDB",alias="ContosoSalesDat")
@udf.function()
def read_from_sql_db(sqlDB: fn.FabricSqlConnection)-> list:
    [...]

修改代码后,可以在开发模式下使用 测试功能 测试更改。 准备就绪后,可以使用工具栏中的“发布”按钮发布函数。 此操作可能需要几分钟时间。

“发布”按钮的屏幕截图。

发布完成后,可以通过将鼠标悬停在函数资源管理器列表中函数的名称上,然后单击侧面板中的“运行”按钮来运行函数。 底部面板“输出”显示运行函数的结果。

用于运行函数的侧面板的屏幕截图。

这样就可以从 Fabric 用户数据函数连接到数据源。

从 Fabric 变量库获取变量

Microsoft Fabric 中的 Fabric 变量库 是一个集中存储库,用于管理可在工作区内的不同项中使用的变量。 它允许开发人员高效自定义和共享项配置。 按照以下步骤在函数中使用变量库:

  1. 使用 “管理连接” 向变量库添加连接,并获取变量库项的 别名
  2. 为变量库项添加连接修饰器。 例如,@udf.connection(argName="varLib", alias="<My Variable Library Alias>") 并将别名替换为变量库项目中新添加的连接。
  3. 在函数定义中,包含一个类型为fn.FabricVariablesClient的参数。 此客户端提供使用变量库项所需的方法。
  4. 使用 getVariables() 方法从变量库获取所有变量。
  5. 若要读取变量的值,请使用["variable-name"].get("variable-name")

在此示例中,我们模拟生产环境和开发环境的配置方案。 此函数使用从变量库检索的值设置存储路径,具体取决于所选环境。 变量库包含一个名为ENV的变量,用户可以在其中设置值devprod

@udf.connection(argName="varLib", alias="<My Variable Library Alias>")
@udf.function()
def get_storage_path(dataset: str, varLib: fn.FabricVariablesClient) -> str:
    """
    Description: Determine storage path for a dataset based on environment configuration from Variable Library.
    
    Args:
        dataset_name (str): Name of the dataset to store.
        varLib (fn.FabricVariablesClient): Fabric Variable Library connection.
    
    Returns:
        str: Full storage path for the dataset.
    """
    # Retrieve variables from Variable Library
    variables = varLib.getVariables()
    
    # Get environment and base paths
    env = variables.get("ENV")    
    dev_path = variables.get("DEV_FILE_PATH")
    prod_path = variables.get("PROD_FILE_PATH")
    
    # Apply environment-specific logic
    if env.lower() == "dev":
        return f"{dev_path}{dataset}/"
    elif env.lower() == "prod":
        return f"{prod_path}{dataset}/"
    else:
        return f"incorrect settings define for ENV variable"