通过


适用于 Fabric 的 NotebookUtils 变量库实用工具

在笔记本代码中,使用变量库可以帮助避免硬编码值。 无需编辑代码,而是更新库中的值并在运行时检索它们。 此模式通过集中配置帮助跨团队和项目重复使用笔记本。

下表列出了可用的变量库方法:

方法 Signature 说明
getLibrary getLibrary(variableLibraryName: String): VariableLibrary 检索变量库对象。 将变量作为返回对象的属性来访问,例如 library.variableName。 可以使用 getVariable('name') 或括号语法 library['name'] 进行动态访问。
get get(variableReference: String): Any 按其引用路径检索单个变量的值$(/**/libraryName/variableName)。 需要 /**/ 前缀。 该值根据变量定义自动键入。

定义变量

使用 notebookutils.variableLibrary前在变量库中定义变量。 可以通过 Fabric UI 创建和管理变量库。

变量库中变量列表的屏幕截图。

检索变量库

使用 getLibrary() 将整个库检索为对象,然后访问变量作为属性。 需要动态访问时,请使用 getVariable('name') 或括号语法 library['name']

samplevl = notebookutils.variableLibrary.getLibrary("sampleVL")

# Property access
samplevl.test_int
samplevl.test_str

# Method access (useful for dynamic variable names)
samplevl.getVariable("test_int")

# Bracket access
samplevl["test_int"]

以下示例演示如何使用变量库值动态构造文件路径:

samplevl = notebookutils.variableLibrary.getLibrary("sampleVL")

file_path = f"abfss://{samplevl.Workspace_name}@onelake.dfs.fabric.microsoft.com/{samplevl.Lakehouse_name}.Lakehouse/Files/<FileName>.csv"
df = spark.read.format("csv").option("header","true").load(file_path)

display(df)

按引用访问单个变量

使用get()方法与引用模式$(/**/libraryName/variableName)获取单个变量的值。 该值根据变量定义自动键入。

重要

引用模式中必须包含/**/前缀。 完整模式必须是 $(/**/libraryName/variableName),其中 libraryName 确切的变量库项名称是 variableName 该库中定义的变量。 名称区分大小写。

notebookutils.variableLibrary.get("$(/**/samplevl/test_int)")
notebookutils.variableLibrary.get("$(/**/samplevl/test_str)")
notebookutils.variableLibrary.get("$(/**/samplevl/test_bool)")

支持的变量类型

变量库支持以下数据类型。 检索值时会自动键入值 ,在大多数情况下不需要显式强制转换它们。

类型 说明 示例
字符串 文本值。 "my_connection_string"
整数 整数。 42
布尔值 布尔值 true/false。 true
数字 十进制数。 3.14
日期时间 采用 ISO 8601 格式的日期和时间值。 "2025-01-15T08:30:00Z"
GUID 全局唯一标识符。 "123e4567-e89b-12d3-a456-426614174000"
项目参考 与支持的 Fabric 项相关的引用。 "workspace/item"

环境特定的配置

变量库支持 值集,这使你可以为同一变量定义替代值集,例如开发、测试和生产。每个工作区一次设置一个活动值,部署管道可以自动激活每个阶段设置的相应值。

在跨环境推广笔记本时,此模式无需更改代码:

# These values change based on the active value set (dev/test/prod)
app_config = notebookutils.variableLibrary.getLibrary("app_config")

api_endpoint = app_config.api_endpoint
batch_size = app_config.batch_size
debug_mode = app_config.debug_enabled

print(f"API Endpoint: {api_endpoint}")
print(f"Batch Size: {batch_size}")
print(f"Debug Mode: {debug_mode}")

if debug_mode:
    print("Running in debug mode")

注意事项

请记住以下注意事项:

  • API notebookutils.variableLibrary 仅支持访问同一工作区中的变量库。 不支持跨工作区访问。
  • 在引用执行时,无法在子笔记本中跨工作区检索变量库。
  • 笔记本代码引用变量库的活动值集中定义的变量。 若要使用不同的值,请激活工作区中的不同值集,或使用部署管道管理每个环境的值集。
  • 变量库实用工具当前不支持服务主体(SPN)。
  • 变量库是笔记本中的只读库。 通过 Fabric UI 或 API 进行更改。
  • 每个库最多支持 1,000 个变量和 1,000 个值集,最多包含 10,000 个单元格和 1 MB 大小限制。
  • 变量和库名称区分大小写。 引用变量时,请使用确切的名称匹配。

小窍门

使用部署管道自动激活每个阶段(开发、测试、生产)相应的值集。 这样就无需在跨环境推广笔记本时手动切换值集或修改代码。