{% include JB/setup %}
Apache Zeppelin dynamically creates input forms. Depending on language backend, there're two different ways to create dynamic form. Custom language backend can select which type of form creation it wants to use. Forms can have different scope (paragraph or note). Forms with scope “note” available in all paragraphs regardless of which paragraph has code to create these forms.
This mode creates form using simple template language. It's simple and easy to use. For example Markdown, Shell, Spark SQL language backend uses it.
To create text input form, use ${formName}
templates.
for example
Also you can provide default value, using ${formName=defaultValue}
.
To create password form, use ${password:formName}
templates.
for example
To create select form, use ${formName=defaultValue,option1|option2...}
for example
Also you can separate option's display name and value, using ${formName=defaultValue,option1(DisplayName)|option2(DisplayName)...}
The paragraph will be automatically run after you change your selection by default. But in case you have multiple types dynamic form in one paragraph, you might want to run the paragraph after changing all the selections. You can control this by unchecking the below Run on selection change option in the setting menu.
Even if you uncheck this option, still you can run it by pressing Enter
.
For multi-selection, you can create a checkbox form using ${checkbox:formName=defaultValue1|defaultValue2...,option1|option2...}
. The variable will be substituted by a comma-separated string based on the selected items. For example:
You can specify the delimiter using ${checkbox(delimiter):formName=...}
:
Like select form, the paragraph will be automatically run after you change your selection by default. But in case you have multiple types dynamic form in one paragraph, you might want to run the paragraph after changing all the selections. You can control this by unchecking the below Run on selection change option in the setting menu.
Even if you uncheck this option, still you can run it by pressing Enter
.
Has a same syntax but starts with two symbols $
. (for ex. input $${forName}
)
Some language backends can programmatically create forms. For example ZeppelinContext provides a form creation API
Here are some examples:
{% highlight scala %} %spark println("Hello "+z.textbox(“name”)) {% endhighlight %}
</div> <div data-lang="python" markdown="1">
{% highlight python %} %pyspark print("Hello "+z.textbox(“name”)) {% endhighlight %}
</div>
Use z.input()
instead in version 0.7.3 or prior. z.input()
is deprecated in 0.8.0.
{% highlight scala %} %spark println("Hello "+z.textbox(“name”, “sun”)) {% endhighlight %}
</div> <div data-lang="python" markdown="1">
{% highlight python %} %pyspark print("Hello "+z.textbox(“name”, “sun”)) {% endhighlight %}
</div>
Use z.input()
instead in version 0.7.3 or prior. z.input()
is deprecated in 0.8.0.
{% highlight scala %} %spark print("Password is "+ z.password(“my_password”)) {% endhighlight %}
</div> <div data-lang="python" markdown="1">
{% highlight python %} %pyspark print("Password is "+ z.password(“my_password”)) {% endhighlight %}
</div>
{% highlight scala %} %spark println("Hello "+z.select(“day”, Seq((“1”,“mon”), (“2”,“tue”), (“3”,“wed”), (“4”,“thurs”), (“5”,“fri”), (“6”,“sat”), (“7”,“sun”)))) {% endhighlight %}
</div> <div data-lang="python" markdown="1">
{% highlight python %} %pyspark print("Hello "+z.select(“day”, [(“1”,“mon”), (“2”,“tue”), (“3”,“wed”), (“4”,“thurs”), (“5”,“fri”), (“6”,“sat”), (“7”,“sun”)])) {% endhighlight %}
</div>
{% highlight scala %} %spark val options = Seq((“apple”,“Apple”), (“banana”,“Banana”), (“orange”,“Orange”)) println("Hello “+z.checkbox(“fruit”, options).mkString(” and ")) {% endhighlight %}
</div> <div data-lang="python" markdown="1">
{% highlight python %} %pyspark options = [(“apple”,“Apple”), (“banana”,“Banana”), (“orange”,“Orange”)] print("Hello "+ " and ".join(z.checkbox(“fruit”, options, [“apple”]))) {% endhighlight %}
</div>
The difference in the method names: