砖小部件
输入小部件允许您向笔记本和仪表板添加参数。小部件API由创建各种类型的输入小部件、删除它们和获取绑定值的调用组成。
如果您运行的是Databricks Runtime 11.0或以上版本,也可以使用Databricks笔记本中的ipywidgets.
Databricks小部件最适合:
构建使用不同参数重新执行的笔记本或仪表板
快速浏览单个查询的不同参数的结果
要查看Scala、Python或R中小部件API的文档,使用以下命令:dbutils.widgets.help ()
数据部件类型
有4种类型的小部件:
文本
:在文本框中输入。下拉
:从提供的值列表中选择。组合框
:文本和下拉菜单的组合。从提供的列表中选择一个值或在文本框中输入一个值。多选
:从提供的值列表中选择一个或多个值。
小部件下拉菜单和文本框立即出现在笔记本工具栏后面。
Databricks小部件API
小部件API在Scala、Python和r中的设计是一致的。SQL中的小部件API略有不同,但相当于其他语言。控件管理小部件砖公用事业接口。
所有小部件类型的第一个参数是
的名字
.这是用于访问小部件的名称。第二个论点是
defaultValue
;小部件的默认设置。第三个参数适用于所有小部件类型
文本
是选择
,一个小部件可以接受的值列表。此参数不用于文本
小部件类型。最后一个论点是
标签
,一个显示在小部件文本框或下拉列表上的标签的可选值。
小部件只接受字符串值。
dbutils.小部件.下拉(“状态”,“CA”,[“CA”,“他”,“小姐”,“纽约”,”或“,“我们”])dbutils.小部件.文本(“数据库”,“customers_dev”)
创建小部件下拉状态默认的“CA”选择选择*从(值(“CA”),(“他”),(“小姐”),(“纽约”),(”或“),(“我们”))创建小部件文本数据库默认的“customers_dev”
Databricks小部件示例
要查看每个方法的详细API文档,请使用dbutils.widgets.help(“<方法名称>”)
.帮助API在所有语言中都是相同的。例如:
dbutils.小部件.帮助(“下拉”)
创建一个简单的下拉小部件。
dbutils.小部件.下拉(“状态”,“CA”,[“CA”,“他”,“小姐”,“纽约”,”或“,“我们”])
创建小部件下拉状态默认的“CA”选择选择*从(值(“CA”),(“他”),(“小姐”),(“纽约”),(”或“),(“我们”))
从小部件面板与小部件交互。
你可以通过调用来访问小部件的当前值:
dbutils.小部件.得到(“状态”)
选择" ${状态}"
最后,您可以删除笔记本中的一个或所有小部件:
dbutils.小部件.删除(“状态”)dbutils.小部件.removeAll()
删除小部件状态
如果删除小部件,则不能在同一单元格中创建小部件。必须在另一个单元格中创建小部件。
在Spark SQL中使用小部件值
Spark SQL将小部件值作为可以在查询中使用的字符串字面值访问。
当交互式地执行笔记本时,您可以从Spark SQL访问以任何语言定义的小部件。考虑以下工作流程:
创建当前目录中所有数据库的下拉小部件:
dbutils.小部件.下拉(“数据库”,“默认”,[数据库[0]为数据库在火花.目录.listDatabases()))
创建一个文本小部件来手动指定表名:
dbutils.小部件.文本(“表”,"")
运行SQL查询查看数据库中的所有表(从下拉列表中选择):
在${database}中显示表
中手动输入表名
表格
小部件。预览表的内容,而不需要编辑查询的内容:
SELECT * FROM ${database}。${table}限制100
请注意
一般来说,不能使用小部件在笔记本内的不同语言之间传递参数。您可以创建一个小部件__arg1
在Python单元格中,如果你一次运行一个单元格,就可以在SQL或Scala单元格中使用它。但是,如果您使用运行所有或者把笔记本当成一项工作。
解决方法:
对于不混合语言的笔记本,您可以为每种语言创建一个笔记本,并在您运行笔记本.
控件可以访问小部件
spark.sql ()
调用。例如,在Python中:spark.sql(“选择getArgument (__arg1)”),(1)[0][0]
.
配置小部件设置
您可以在选择新值时配置小部件的行为,小部件面板是否始终固定在笔记本的顶部,以及更改小部件在笔记本中的布局。
单击Widget面板右端的图标。
在弹出的Widget Panel Settings对话框中,选择小部件的执行行为。
运行笔记本:每次选择一个新值,整个笔记本将重新运行。
运行访问命令:每次选择一个新值时,只会重新运行检索该特定小部件值的单元格。这是创建小部件时的默认设置。在此配置中不会重新运行SQL单元格。
什么都不做:每次选择新值时,不重新运行任何内容。
要将小部件固定在笔记本的顶部或将小部件放置在第一个单元格之上,请单击.该设置是根据每个用户保存的。再次单击图钉图标以重置为默认行为。
如果你有可以管理笔记本的权限,您可以通过单击配置小部件布局.每个小部件的顺序和大小都可以定制。若要保存或取消更改,请单击.
小部件布局与笔记本一起保存。如果从默认配置更改小部件布局,则不会按字母顺序添加新小部件。
若要将小部件布局重置为默认顺序和大小,请单击打开小部件面板设置对话框,然后点击重新布局.的
removeAll ()
命令不会重置小部件布局。
例如笔记本电脑
你可以看到一个演示运行访问命令设置工作在以下笔记本。的一年
通过设置创建小部件2014
用于DataFrame API和SQL命令。
的设置时一年
小部件2007
,则会重新运行DataFrame命令,但不会重新运行SQL命令。
使用带有%run的Databricks小部件
如果你记笔记本包含小部件的,则使用小部件的默认值运行指定的笔记本。您还可以将值传递给小部件。例如:
%运行/道路/ /笔记本$ X=“10”$ Y=“1”
这个示例运行指定的笔记本并通过10
进入widget X和1
变成小部件Y。
限制
有一个已知的问题,小部件状态可能无法在按下后正确清除运行所有,即使在代码中清除或删除小部件。如果发生这种情况,您将看到小部件的可视状态与其打印状态之间的差异。单独重新运行单元格可能会绕过这个问题。为了完全避免这个问题,Databricks建议您使用ipywidgets.