Databricks中如何通过%run命令向含Widget的笔记本传递变量?
在Databricks中通过%run传递变量到带Widget的笔记本
有两种可行的方法实现通过%run将变量v传递给目标笔记本的name Widget:
方法1:提前设置Widget值
由于%run会在当前会话中执行目标笔记本的代码,你可以先在当前笔记本中为目标笔记本的name Widget赋值,再执行%run:
dbutils.widgets.text("name", v) %run /path/to/notebook
这样目标笔记本里的name Widget会直接读取到变量v的实际值,且执行后目标笔记本定义的所有变量都能在当前会话中直接访问,和常规%run的行为一致。
方法2:直接展开变量值到魔术命令中
正确的参数传递格式需要将变量v的实际值直接嵌入到%run命令里,而非传递变量名:
- 如果
v是字符串类型:
%run /path/to/notebook $name="$v"
- 如果
v是数值类型:
%run /path/to/notebook $name=$v
这种写法会把v的实际值传递给目标笔记本的name Widget,而非字符串"v"。
原写法失效的原因
你最初尝试的%run /path/to/notebook $name=v会将字符串"v"传递给name Widget,而非变量v的实际值,因此无法达到预期效果。
对比dbutils.notebook.run(),%run是同步执行,目标笔记本的变量会直接暴露在当前会话中,完全符合你需要直接访问变量的需求。
内容的提问来源于stack exchange,提问作者almosthavoc
相关产品推荐
相关产品推荐

