Databricks Python笔记本如何向dbutils文本控件传变量作为默认值
问题原因
Databricks 笔记本控件存在会话级缓存规则:当前笔记本活跃会话中如果已经存在同名控件,后续调用dbutils.widgets.text()创建同名控件时,传入的默认值不会覆盖会话内已存储的控件值。如果此前创建该控件时未设置默认值、或手动清空过输入框内容,就会出现空白输入框,不会自动填充你传入的变量值。
你当前写的变量传参语法本身没有错误,问题并非来自参数传递写法。
修复方案
创建控件前,先移除当前会话中已存在的同名控件,清除缓存后再传入变量作为默认值创建即可,参考代码:
defaultValue = "2092" # 移除同名控件的历史缓存 dbutils.widgets.remove("yearvalue") # 重新创建控件,传入变量作为默认值 dbutils.widgets.text("yearvalue", defaultValue)
如果需要初始化多个控件,也可以先调用dbutils.widgets.removeAll()清空当前会话内所有控件缓存,再依次执行各控件的创建逻辑,适合批量初始化场景。
注意事项
dbutils.widgets.text()的第二个参数仅接受字符串类型,如果你的默认值变量是数字、时间戳等非字符串类型,需要先通过str()方法转成字符串再传入,否则会出现显示异常。- 作业调度场景下,作业配置中传入的参数优先级高于代码内设置的默认值,此时不显示代码内的默认值属于正常逻辑。
内容的提问来源于stack exchange,提问作者Surender Raja
相关产品推荐
相关产品推荐

