You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中获取Databricks Notebook的全部Widget(含未覆盖项)

解决Databricks Job/ADF运行时无法获取未覆盖Widget默认值的问题

dbutils.notebook.entry_point.getCurrentBindings()的局限性在于:它仅会返回外部传入(即被覆盖)的Widget参数,不会包含未修改的默认值。这就是为什么你在Job或ADF中只覆盖a的值时,只能拿到{'a': 'aaaa'},而看不到b的默认值。

要获取所有Widget(包括未被覆盖的默认值),可以通过以下方式实现:

  1. 提前定义所有Widget的名称和对应默认值,存入一个字典;
  2. 基于这个字典批量创建Widget;
  3. 获取当前传入的绑定值后,将其与默认值字典合并——传入的值会覆盖对应键的默认值,最终得到完整的Widget集合。

完整代码示例:

# 定义所有Widget的名称与默认值
widget_defaults = {
    "a": "a",
    "b": "b"
}

# 批量创建Widget
for widget_name, default_value in widget_defaults.items():
    dbutils.widgets.text(widget_name, default_value)

# 获取外部传入的绑定值
current_bindings = dbutils.notebook.entry_point.getCurrentBindings()

# 合并默认值与传入值,传入值优先覆盖默认值
all_widgets = {**widget_defaults, **current_bindings}

# 输出所有Widget的键值对
print(all_widgets)

如果使用其他类型的Widget(如下拉框dropdown、复选框checkbox等),只需调整创建Widget的方法,并确保widget_defaults中的值与对应Widget的默认值一致即可。

内容的提问来源于stack exchange,提问作者Dylan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:02:23