【问题标题】:Easily entering arguments from dbutils.notebook.run when using a notebook directly直接使用笔记本时从 dbutils.notebook.run 轻松输入参数
【发布时间】:2022-07-28 21:32:08
【问题描述】:

我这样调用笔记本:

dbutils.notebook.run(path, timeout, arguments)

其中 arguments 是一个字典,其中包含笔记本小部件的许多字段。

我想以交互方式调试被调用的笔记本:复制/粘贴小部件参数需要时间,并且可能会导致难以发现的错误无法完美完成。

最好只使用参数字典并直接使用它。也许复制它,然后从字典中填充小部件。

我怎样才能做到这一点,或者类似的事情?

【问题讨论】:

  • 或者 - 甚至更好 - 能够从笔记本运行直接转到具有相同参数的交互式笔记本。
  • 为什么不定义一个以字典为输入并在笔记本中绑定相应键和值的函数呢?这样您就可以从外部笔记本中打印所需的参数,然后直接将该字典复制粘贴到内部笔记本中
  • 喜欢我提出的答案吗?好主意。

标签: python databricks dbutils


【解决方案1】:

如果我们得到一些像这样的变量:

dbutils.widgets.text('myvar', '-1', '')
myvar = dbutils.widgets.get('myvar')

我可以像这样覆盖它们:

config = {'myvar': '42'}

import sys
module = sys.modules[__name__]
for k, v in config.items():
  setattr(module, k, v)

这意味着所有的覆盖都发生在我以后可以删除的单元格中,而不会在实际代码中留下任何编辑。

【讨论】:

    【解决方案2】:

    在小部件中将值作为 json 传递,如下所示,让它成为“过滤器”

    {"Type":"Fruit","Item":"Apple"]
    

    要读取 json 你需要使用 json 库

    import json
    filters = dbutils.widgets.get("Filters")
    jsonfilter = json.loads(filters)
    

    现在您可以通过

    访问单个项目
    jsonfilter["Item"]
    

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 1970-01-01
      • 2020-11-21
      • 2018-04-27
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多