来自 Azure 数据工厂或本地 if 语句的 databricks Python notebook
databricks Python notebook from azure data factory or locally if statement
我有一个 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 调用的。
非常感谢!
当 运行 来自 ADF 时,您可以使用前缀调用笔记本。
例如,您可以使用 Program_Name = "ADF_prog_name"
调用笔记本
Program_Name = dbutils.widgets.get("Program_Name")
if not(Program_Name.contains('ADF')):
Program_Name = 'ABC123'
与其捕获异常,不如显式创建小部件并设置默认值更容易(参见 docs)。
dbutils.widgets.text("Program_Name", "ABC123", "Program name")
Program_Name = dbutils.widgets.get("Program_Name")
这有以下好处:
- 代码更简单 - 您无需执行任何操作 try/catch
- 如有必要,您可以传递另一个程序名称,即使您 运行 notebook 交互
我有一个 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 调用的。
非常感谢!
当 运行 来自 ADF 时,您可以使用前缀调用笔记本。
例如,您可以使用 Program_Name = "ADF_prog_name"
Program_Name = dbutils.widgets.get("Program_Name")
if not(Program_Name.contains('ADF')):
Program_Name = 'ABC123'
与其捕获异常,不如显式创建小部件并设置默认值更容易(参见 docs)。
dbutils.widgets.text("Program_Name", "ABC123", "Program name")
Program_Name = dbutils.widgets.get("Program_Name")
这有以下好处:
- 代码更简单 - 您无需执行任何操作 try/catch
- 如有必要,您可以传递另一个程序名称,即使您 运行 notebook 交互