1

我有一个 Databricks Python 笔记本,它使用以下命令从 ADF 读取参数:

Program_Name = dbutils.widgets.get("Program_Name")

我可以在笔记本代码中执行 IF 语句或类似的操作,这样当我以交互方式运行笔记本时,它会用普通赋值代替对 dbutils 的调用?从逻辑上讲,我想要类似的东西:

if running in ADF:
   Program_Name = dbutils.widgets.get("Program_Name")
else:
   Program_Name = 'ABC123'

如果这样的事情是可能的,它胜过每次修改笔记本的其余部分时都必须注释掉 dbutils 调用的替代方法:) 我做了类似的事情,以便可以从 Jupyter/PyCharm 或从命令行,但我不知道任何告诉 python 解释器它是从 ADF 调用的。

非常感谢!

4

2 回答 2

2

与其赶上异常,不如更容易地显式创建小部件并设置默认值(请参阅文档)。

dbutils.widgets.text("Program_Name", "ABC123", "Program name")
Program_Name = dbutils.widgets.get("Program_Name")

这有以下好处:

  1. 代码更简单——你不需要做任何 try/catch
  2. 如有必要,即使您以交互方式运行笔记本,也可以传递另一个程序名称
于 2021-06-06T08:57:46.103 回答
0

从 ADF 运行笔记本时,您可以使用前缀调用笔记本。例如,您可以使用Program_Name = "ADF_prog_name"

Program_Name = dbutils.widgets.get("Program_Name")
if not(Program_Name.contains('ADF')):
   Program_Name = 'ABC123'
于 2021-06-04T10:12:53.643 回答