微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自 azure 数据工厂或本地 if 语句的 databricks Python 笔记本

如何解决来自 azure 数据工厂或本地 if 语句的 databricks Python 笔记本

我有一个 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 调用的。

非常感谢!

解决方法

与捕获异常相比,显式创建小部件并设置默认值更容易(请参阅https://www.powershellgallery.com/packages/Traverse/0.5.1085.1/Content/Private%5CConvert-HashTableToXML.ps1)。

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

这样做有以下好处:

  1. 代码更简单 - 您无需进行任何 try/catch
  2. 如有必要,即使您以交互方式运行笔记本,也可以传递另一个程序名称
,

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

调用笔记本
Program_Name = dbutils.widgets.get("Program_Name")
if not(Program_Name.contains('ADF')):
   Program_Name = 'ABC123'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。