Apache Zeppelin 动态表单(Dynamic Form)完整指南:模板语法与编程式创建
后端前端大数据数据分析【免费下载链接】zeppelinWeb-based notebook that enables>项目地址https://gitcode.com/gh_mirrors/zeppelin2/zeppelin点击查看免费下载导读Apache Zeppelin 的动态表单Dynamic Form机制允许用户在笔记本Notebook的段落Paragraph中通过简单的模板语法或编程 API 声明输入控件文本框、下拉选择、复选框从而在运行分析任务时动态获取参数。本文基于官方文档 docs/usage/dynamic_form/intro.md 并结合仓库源码系统讲解模板式与编程式两类表单创建方式、paragraph 与 note 两种作用域的区别以及背后的FormType解析与注入原理读完即可在 Zeppelin 中构建可交互的参数化分析段落。什么是 Dynamic FormApache Zeppelin 能够动态创建输入表单Input Form根据语言后端language backend的不同有两种创建动态表单的方式使用表单模板form Templates通过简单模板语言在段落脚本文本中直接声明表单简单易用。Markdown、Shell、Spark SQL 等语言后端采用这种方式。编程式创建Programmatically部分语言后端提供编程 API 创建表单例如 Spark 的 ZeppelinContext 提供了完整的表单创建 API。自定义语言后端可以选择它想使用的表单创建类型这由解释器Interpreter声明的FormType决定。从源码看Interpreter.java 中定义了三种类型NATIVE解释器使用 ZeppelinContext 等原生 API 编程式创建表单SIMPLE解释器使用简单模板语法表单由段落脚本文本解析而来NONE解释器不提供动态表单能力。表单可以有不同的作用域scopeparagraph作用域的表单只属于创建它的那个段落而note作用域的表单在整个笔记本note的所有段落中都可用无论哪个段落中的代码创建了这些表单。使用表单模板scope: paragraph模板式表单通过段落文本中的${...}占位符声明是使用最便捷的方式。文本输入表单要创建文本输入表单使用${formName}模板。例如%md Hello ${name}运行后 Zeppelin 会在段落上方渲染一个文本输入框也可以提供默认值语法为${formNamedefaultValue}%md Hello ${nameworld}下拉选择表单要创建下拉选择Select表单使用${formNamedefaultValue,option1|option2...}语法。例如%md Hello ${namesun,mon|tue|wed|thurs|fri|sat|sun}还可以分离选项的显示名称DisplayName与真实值使用${formNamedefaultValue,option1(DisplayName)|option2(DisplayName)...}。例如下面语法中显示给用户的是 Option A 这样的可读名称而脚本中实际拿到的是option1这样的值%md ${selectoption1,option1(Option A)|option2(Option B)|option3(Option C)}复选框表单多选对于多选场景使用${checkbox:formNamedefaultValue1|defaultValue2...,option1|option2...}创建复选框表单多个默认值之间用|分隔。变量最终会被替换为基于选中项拼接而成的逗号分隔字符串。例如%md ${checkbox:fruitapple|banana,apple|banana|orange}还可以通过${checkbox(delimiter):formName...}自定义选中值拼接的分隔符例如指定and作为分隔符选中 US 和 JP 后变量会展开为US and JP%md ${checkbox( and ):countryUS|JP,US|UK|JP}选择变更后的行为控制Run on selection change默认情况下一旦你改变了表单中的选择段落会自动重新运行。但在一个段落中包含多种动态表单时你可能希望在改完所有选择之后再统一运行段落——这可以通过在设置菜单中取消勾选Run on selection change选项来控制。即使取消勾选该选项你仍然可以按Enter键来手动运行段落。使用表单模板scope: notenote 作用域的模板表单与 paragraph 作用域语法完全相同唯一区别是以两个美元符号$开头例如$${forName}文本输入$${nameworld}、下拉选择、复选框等所有类型同理。由于 note 作用域的表单存储在笔记本级别因此只要笔记本中存在任意一个段落声明了$${...}表单笔记本中所有段落都可以共享并使用这些参数值。编程式创建表单scope: paragraph部分语言后端如 Spark 的 ZeppelinContext支持通过编程 API 创建表单。使用这些 API 时表单控件仍然渲染在段落上方但控件的类型、默认值和选项完全由代码控制适合在需要根据数据动态生成选项的复杂场景中使用。文本输入表单%spark println(Hello z.textbox(name))%pyspark print(Hello z.textbox(name))带默认值的文本输入表单%spark println(Hello z.textbox(name, sun))%pyspark print(Hello z.textbox(name, sun))下拉选择表单%spark println(Hello z.select(day, Seq((1,mon), (2,tue), (3,wed), (4,thurs), (5,fri), (6,sat), (7,sun))))%pyspark print(Hello z.select(day, [(1,mon), (2,tue), (3,wed), (4,thurs), (5,fri), (6,sat), (7,sun)]))注意每个选项都是(value, displayName)形式的二元组第一个元素是实际传入脚本的值第二个元素是展示给用户的名称。复选框表单多选%spark val options Seq((apple,Apple), (banana,Banana), (orange,Orange)) println(Hello z.checkbox(fruit, options).mkString( and ))%pyspark options [(apple,Apple), (banana,Banana), (orange,Orange)] print(Hello and .join(z.checkbox(fruit, options, [apple])))Python 版本的z.checkbox支持传入第三个参数defaultChecked指定默认选中的值此处默认选中appleScala 版本也支持带默认选中值的重载方法。编程式创建表单scope: note编程式创建 note 作用域表单时方法名有所不同对应关系如下表Scope paragraphScope noteinput (或 textbox)noteTextboxselectnoteSelectcheckboxnoteCheckbox例如在 Scala 中使用z.noteTextbox(name)创建笔记本级文本框所有段落都能读取该参数值而z.textbox(name)只对当前段落生效。源码级原理动态表单是如何工作的1. FormType 决定表单注入方式在段落执行前Zeppelin 会根据解释器声明的FormType决定如何为脚本注入表单。见 Paragraph.java 的inject form逻辑当interpreter.getFormType() FormType.NATIVE时清空段落设置settings.clear()表单完全由解释器内部的 GUI如noteGui编程式管理当FormType.SIMPLE时从脚本正文构建输入控件Input.extractSimpleQueryForm(script, false)解析段落作用域模板Input.extractSimpleQueryForm(script, true)解析 note 作用域模板即$${...}随后将这些Input对象写入段落设置执行结束后若为NATIVE类型会把 note 级参数与表单note.setNoteParams(...)、note.setNoteForms(...)持久化到笔记本这就是 note 作用域表单能在所有段落生效的原因。2. 模板解析器Input.extractSimpleQueryForm模板语法的解析实现在 Input.java。源码中的语法注释完整定义了模板格式${TYPE:NAMEDEFAULT_VALUE1|DEFAULT_VALUE2|...,VALUE1|VALUE2|...}TYPE可选支持带参数的类型如checkbox( or )NAME与各个VALUE均可附带显示名称如US(United States)默认值之间用|分隔多个默认值仅 checkbox 类型支持。解析使用的正则分别为段落作用域模式VAR_PTN ([_])?[$]{?)[}]和 note 作用域模式VAR_NOTE_PTN ([_])?[$]{2}[{]...注意其中的[$]{2}即双美元符号$$getInputForm方法根据类型生成TextBox、Select或CheckBox实例。此外模板还支持用_前缀即_${...}声明隐藏表单splitPipe负责按|拆分默认值与选项。3. ZeppelinContext 编程式 API编程式 API 的核心实现在 BaseZeppelinContext.java所有方法均以ZeppelinApi注解公开textbox(name)/textbox(name, defaultValue)段落级文本框select(name, defaultValue, paramOptions)段落级下拉选择checkbox(name, options)/checkbox(name, defaultChecked, options)段落级多选noteTextbox、noteSelect、noteCheckbox系列方法内部只是将noteFormtrue传入私有方法从而将表单登记到 note 级 GUInoteGui而不是段落级 GUIgui与官方文档的方法映射表完全对应。4. 前端渲染表单在前端由 dynamic-forms.directive.js 负责渲染它以forms与params双向绑定驱动界面loadForm将表单的默认值写入 paramstoggleCheckbox维护复选框的选中状态并同步到 params最终在段落执行时把用户输入作为参数注入脚本。小结动态表单是 Zeppelin 实现交互式、数据驱动分析的关键能力模板语法${...}与$${...}让 Markdown、Shell、Spark SQL 等后端可以零代码声明输入控件ZeppelinContextz.textbox、z.select、z.checkbox及note系列让 Spark 等后端可以按数据动态构建表单。理解FormTypeNATIVE/SIMPLE/NONE与作用域paragraph/note的区别就能在笔记本中灵活搭建参数化分析流程。赞分享后端前端大数据数据分析【免费下载链接】zeppelinWeb-based notebook that enables>项目地址https://gitcode.com/gh_mirrors/zeppelin2/zeppelin点击查看免费下载相关推荐Apache Zeppelin 动态表单Dynamic Form完全指南模板语法与 ZeppelinContext 编程式创建Apache Zeppelin 动态表单Dynamic Form完全指南模板语法与 ZeppelinContext 编程式创建 Apache Zeppel数据分析数据可视化大数据后端前端任务调度游戏里的 DLSS 还停在几年前的老版本DLSS Swapper 让你替换 DLL 版本并随时回滚游戏里的 DLSS 还停在几年前的老版本DLSS Swapper 让你替换 DLL 版本并随时回滚 不少支持 DLSS 的游戏几年了还带着当年出厂的那份超分桌面应用Apache Zeppelin动态表单系统创建交互式数据应用指南Apache Zeppelin动态表单系统创建交互式数据应用指南 Apache Zeppelin动态表单系统是构建交互式数据分析应用的强大工具它允许用户在笔数据分析数据可视化大数据后端上一篇如何利用Office-Tool多语言功能赢得本地化市场竞争优势下一篇mssql-scripter安全指南保护数据库连接与脚本输出的3个关键步骤创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PCA9422+PIC32MZ构建高可靠嵌入式电源管理系统

PCA9422+PIC32MZ构建高可靠嵌入式电源管理系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:40:42 阅读更多 →
Ouroboros Seed Architect 完全指南:从访谈会话到不可变 Seed 规格的需求提取与验收契约设计

Ouroboros Seed Architect 完全指南:从访谈会话到不可变 Seed 规格的需求提取与验收契约设计

AI Agent人工智能代码智能体Agent 编排AI 评测CLI开发工具 【免费下载链接】ouroboros Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CL…

2026/10/10 1:39:42 阅读更多 →
Loro MovableList 非法 Move/Set 操作的导入校验:从 panic 崩溃到整批回滚的防御性设计

Loro MovableList 非法 Move/Set 操作的导入校验:从 panic 崩溃到整批回滚的防御性设计

后端 【免费下载链接】loro Make your JSON data collaborative and version-controlled with CRDTs 项目地址: https://gitcode.com/gh_mirrors/lo/loro 点击查看 免费下载 导读 本文围绕 Loro(CRDT 数据协同引擎)对 MovableList&#xff…

2026/10/10 1:39:42 阅读更多 →

最新新闻

为什么你的 Node 测试会卡死?skills 项目教你诊断 flaky 测试与悬挂进程的完整指南

为什么你的 Node 测试会卡死?skills 项目教你诊断 flaky 测试与悬挂进程的完整指南

为什么你的 Node 测试会卡死?skills 项目教你诊断 flaky 测试与悬挂进程的完整指南 【免费下载链接】skills My own collection of skills for modern Node.js development 项目地址: https://gitcode.com/gh_mirrors/skills15/skills skills 是一个面向现代…

2026/10/10 2:28:59 阅读更多 →
如何读懂 NPUSim 指令流水图:Perfetto 可视化操作与关键字段全解

如何读懂 NPUSim 指令流水图:Perfetto 可视化操作与关键字段全解

如何读懂 NPUSim 指令流水图:Perfetto 可视化操作与关键字段全解 【免费下载链接】npu-simulator NPUSim(全称NPU Simulator)是一款面向算子开发场景的SoC级芯片仿真工具,用于分析运行在AI仿真器上的AI任务在各阶段的精度和性能数…

2026/10/10 2:28:59 阅读更多 →
developer-roadmap 中的 Angular 路由转换动画(Route Transitions)实战指南:为页面切换注入流畅过渡

developer-roadmap 中的 Angular 路由转换动画(Route Transitions)实战指南:为页面切换注入流畅过渡

文档教程知识库 【免费下载链接】developer-roadmap Interactive roadmaps, guides and other educational content to help developers grow in their careers. 项目地址: https://gitcode.com/GitHub_Trending/de/developer-roadmap 点击查看 免费下载 当用户从一…

2026/10/10 2:28:59 阅读更多 →
Kubernetes Python Client 探针模型解析:V1HTTPGetAction 类完整指南

Kubernetes Python Client 探针模型解析:V1HTTPGetAction 类完整指南

后端云原生容器编排 【免费下载链接】python Official Python client library for kubernetes 项目地址: https://gitcode.com/gh_mirrors/python1/python 点击查看 免费下载 本篇技术指南聚焦 Kubernetes 官方 Python 客户端(kubernetes-python-client…

2026/10/10 2:28:59 阅读更多 →
Unison Records 语法保真:从 `view` 往返验证到 Record 访问器的源码实现剖析

Unison Records 语法保真:从 `view` 往返验证到 Record 访问器的源码实现剖析

编程语言编译器语言运行时开发工具 【免费下载链接】unison A friendly programming language from the future 项目地址: https://gitcode.com/gh_mirrors/un/unison 点击查看 免费下载 Unison 语言中的 Record(记录类型)是一类以花括号 { …

2026/10/10 2:28:59 阅读更多 →
TVA具身智能系统简介(12):三层核心架构的定义与层级划分

TVA具身智能系统简介(12):三层核心架构的定义与层级划分

前沿技术探索:TVA智能体(简称TVA,亦称“TVA视觉智能体”或“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的通用视觉技术框架。它深度融合深度强化学习(DRL)、卷积神经网络(C…

2026/10/10 2:27:59 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →