Zeppelin Dynamic Forms:如何将变量传递给动态表单——或——重用动态表单
Zeppelin Dynamic Forms: How to pass a variable into a dynamic form --OR-- reuse a dynamic form
在 Zeppelin 中,jdbc 段落可以被参数化以根据来自 select 表单(下拉列表)的输入进行查询,例如
%jdbc
SELECT *
FROM db.table
WHERE colA='${Value=0,0(a)|1(b)|2(c)}'
LIMIT 1
创建一个带有下拉菜单值的输出字段(初始化为对应于值 0 的“a”并具有选项“a”、“b”、“c”)。每当 selected 一个新值时,查询就会运行。在这种情况下,返回 table
的一行,其中 colA
的值对应于 Value.
如果用户 select 从表单中输入“c”,则查询 returns 行 colA=2
。
参见:Zeppelin Dynamic Forms
在 python 段落中,我们可以类似地使用 zeppelin context 对象 z 创建一个。简单地说,
%python
value_list = [(0,'a'),(1,'b'),(2,'c')]
value_default = value_list[0]
z.select('Value',value_list,value_default)
此外,zeppelin 上下文能够共享变量。在上面的 python 示例中,我可以添加行 z.put('valueDefault',value_default)
并在 scala (val valueDefault = z.get('valueDefault')
) 或 jdbc 段落中使用它,我可以将 valueDefault 称为, ${valueDefault}
例如
%jdbc
SELECT *
FROM db.table
WHERE colA='${valueDefault}'
LIMIT 1
returns一行table
和colA=0
.
我的问题是:我怎样才能
(i) 在动态列表规范
中使用---相当于---a z.select
%jdbc
SELECT *
FROM db.table
WHERE colA='${Value=0,z.select(<variable_containing_list of tuples>)}'
LIMIT 1
期望的结果:动态表单(默认值 0,变量的选项列表)
或
(ii) 定义并重复使用范围为整个笔记本的动态列表?
啊哈!动态形式的值由zeppelin上下文输出。
第 1 步:使用例如创建动态表单%python
解释器和 put
它在变量中输出,比如 value_choice
:
%python
value_list = [(0,'a'),(1,'b'),(2,'c')]
value_default = value_list[0]
z.put('value_choice', z.select('Value', value_list, value_default));
第 2 步:在某些 %jdbc
段落中,说“paragraph_1_1”,使用变量:
%jdbc
SELECT *
FROM db.table
WHERE colA={value_choice}
LIMIT 1
注意类型不匹配。您可能必须投射 value_choice 或 colA.
第 3 步(可选):添加 运行 依赖项。在 %python
段中,添加行 z.z.run("paragraph_1_1")
将在每次更新动态表单的值时重新运行 该段。
在 Zeppelin 中,jdbc 段落可以被参数化以根据来自 select 表单(下拉列表)的输入进行查询,例如
%jdbc
SELECT *
FROM db.table
WHERE colA='${Value=0,0(a)|1(b)|2(c)}'
LIMIT 1
创建一个带有下拉菜单值的输出字段(初始化为对应于值 0 的“a”并具有选项“a”、“b”、“c”)。每当 selected 一个新值时,查询就会运行。在这种情况下,返回 table
的一行,其中 colA
的值对应于 Value.
如果用户 select 从表单中输入“c”,则查询 returns 行 colA=2
。
参见:Zeppelin Dynamic Forms
在 python 段落中,我们可以类似地使用 zeppelin context 对象 z 创建一个。简单地说,
%python
value_list = [(0,'a'),(1,'b'),(2,'c')]
value_default = value_list[0]
z.select('Value',value_list,value_default)
此外,zeppelin 上下文能够共享变量。在上面的 python 示例中,我可以添加行 z.put('valueDefault',value_default)
并在 scala (val valueDefault = z.get('valueDefault')
) 或 jdbc 段落中使用它,我可以将 valueDefault 称为, ${valueDefault}
例如
%jdbc
SELECT *
FROM db.table
WHERE colA='${valueDefault}'
LIMIT 1
returns一行table
和colA=0
.
我的问题是:我怎样才能 (i) 在动态列表规范
中使用---相当于---a z.select%jdbc
SELECT *
FROM db.table
WHERE colA='${Value=0,z.select(<variable_containing_list of tuples>)}'
LIMIT 1
期望的结果:动态表单(默认值 0,变量的选项列表)
或 (ii) 定义并重复使用范围为整个笔记本的动态列表?
啊哈!动态形式的值由zeppelin上下文输出。
第 1 步:使用例如创建动态表单%python
解释器和 put
它在变量中输出,比如 value_choice
:
%python
value_list = [(0,'a'),(1,'b'),(2,'c')]
value_default = value_list[0]
z.put('value_choice', z.select('Value', value_list, value_default));
第 2 步:在某些 %jdbc
段落中,说“paragraph_1_1”,使用变量:
%jdbc
SELECT *
FROM db.table
WHERE colA={value_choice}
LIMIT 1
注意类型不匹配。您可能必须投射 value_choice 或 colA.
第 3 步(可选):添加 运行 依赖项。在 %python
段中,添加行 z.z.run("paragraph_1_1")
将在每次更新动态表单的值时重新运行 该段。