原文链接 : http://zeppelin.apache.org/docs/0.7.2/manual/dynamicform.html

译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10030585

贡献者 : 片刻 ApacheCN Apache中文网

Apache Zeppelin动态创建输入表单。根据语言后端,创建动态表单有两种不同的方式。自定义语言后端可以选择要使用哪种类型的表单创建。

使用表单模板

此模式使用简单的模板语言创建表单。它简单易用。例如Markdown,Shell,Spark SQL语言后端使用它。

文本输入表单

要创建文本输入表单,请使用${formName}模板。

例如

动态表单 - 图1

也可以提供默认值,使用${formName=defaultValue}

动态表单 - 图2

选择表单

要创建选择表单,请使用 ${formName=defaultValue,option1|option2…}

例如

动态表单 - 图3

此外,您可以使用选项的显示名称和值分隔 ${formName=defaultValue,option1(DisplayName)|option2(DisplayName)…}

动态表单 - 图4

默认情况下更改选择后,段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ 运行选择更改”选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它Enter

动态表单 - 图5

复选框表单

对于多选,您可以使用复选框来创建${checkbox:formName=defaultValue1|defaultValue2…,option1|option2…}。该变量将由基于所选项的逗号分隔字符串代替。例如:

动态表单 - 图6

此外,您可以使用以下命令指定分隔符${checkbox(delimiter):formName=…}

动态表单 - 图7

选择表单一样,默认情况下更改选择后,段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ 运行选择更改”选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它Enter

动态表单 - 图8

以编程方式创建

一些语言后端使用编程方式创建表单。例如ZeppelinContext提供了表单创建API

这里有一些例子。

文本输入表单

Scala

  1. %spark
  2. println("Hello "+z.input("name"))

Python 展开原码

  1. %pyspark
  2. print("Hello "+z.input("name"))

动态表单 - 图9

具有默认值的文本输入表单

Scala

  1. %spark
  2. println("Hello "+z.input("name", "sun"))

Python 展开原码

  1. %pyspark
  2. print("Hello "+z.input("name", "sun"))

动态表单 - 图10

选择表单

Scala

  1. %spark
  2. println("Hello "+z.select("day", Seq(("1","mon"),
  3. ("2","tue"),
  4. ("3","wed"),
  5. ("4","thurs"),
  6. ("5","fri"),
  7. ("6","sat"),
  8. ("7","sun"))))

Python 展开原码

  1. %pyspark
  2. print("Hello "+z.select("day", [("1","mon"),
  3. ("2","tue"),
  4. ("3","wed"),
  5. ("4","thurs"),
  6. ("5","fri"),
  7. ("6","sat"),
  8. ("7","sun")]))

动态表单 - 图11

复选框表单

Scala

  1. %spark
  2. val options = Seq(("apple","Apple"), ("banana","Banana"), ("orange","Orange"))
  3. println("Hello "+z.checkbox("fruit", options).mkString(" and "))

Python 展开原码

  1. %pyspark
  2. options = [("apple","Apple"), ("banana","Banana"), ("orange","Orange")]
  3. print("Hello "+ " and ".join(z.checkbox("fruit", options, ["apple"])))

动态表单 - 图12