Fabric 用户数据函数通过使用 Fabric 门户中的管理连接功能,为支持的 Fabric 数据源和条目提供连接。 此功能允许连接到 Fabric 数据源,而无需创建连接字符串或管理访问凭据。 对于不作为数据源的 Fabric 项,可以在函数中安全地连接这些项。
在这篇文章中,你将学会如何:
- 为用户数据函数项创建新连接。
- 在函数代码中使用新连接。
- 修改或删除数据连接。
Fabric 用户数据函数中支持的项
Fabric 用户数据函数当前支持以下项:
- 用于读写操作的 Fabric SQL 数据库
- 网络结构仓库用于读写操作
- Fabric 湖仓用于 湖仓文件的读写操作,以及 SQL 终结点的只读操作。
- 用于只读作的构造镜像数据库
- Fabric 变量库 用于将配置设置定义为变量。 了解详细信息。
为用户数据函数项创建新连接
添加的任何数据连接都与用户数据函数项相关联,并且可以在任何函数的代码中引用。 若要遵循本指南,需要现有的 Fabric 用户数据函数项和现有的 Fabric 数据源。
1.从 Functions 门户访问“管理连接”功能
在 “开发”模式下,在 Functions 门户编辑器的功能区中查找并选择“ 管理连接 ”。
打开的窗格包含你创建的任何数据连接。 选择“添加数据连接”以创建新连接。
2.从 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 变量库 是一个集中存储库,用于管理可在工作区内的不同项中使用的变量。 它允许开发人员高效自定义和共享项配置。 按照以下步骤在函数中使用变量库:
- 使用 “管理连接” 向变量库添加连接,并获取变量库项的 别名 。
- 为变量库项添加连接修饰器。 例如,
@udf.connection(argName="varLib", alias="<My Variable Library Alias>")并将别名替换为变量库项目中新添加的连接。 - 在函数定义中,包含一个类型为
fn.FabricVariablesClient的参数。 此客户端提供使用变量库项所需的方法。 - 使用
getVariables()方法从变量库获取所有变量。 - 若要读取变量的值,请使用
["variable-name"]或.get("variable-name")。
例 在此示例中,我们模拟生产环境和开发环境的配置方案。 此函数使用从变量库检索的值设置存储路径,具体取决于所选环境。 变量库包含一个名为ENV的变量,用户可以在其中设置值dev或prod。
@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"