在齐柏林飞艇中,jdbc段落可以参数化,以便根据选择表单(下拉列表)的输入进行查询,例如
%jdbc
SELECT *
FROM db.table
WHERE colA='${Value=0,0(a)|1(b)|2(c)}'
LIMIT 1
使用下拉菜单值创建输出字段(初始化为“a”,对应于值0,并具有选项“a”、“b”、“c”)。无论何时选择新值,都会运行查询。在这种情况下,返回一行table
,其中colA
的值对应于该值
如果用户从表单中选择“c”,查询将返回一行,其中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)
此外,齐柏林飞艇上下文能够共享变量。在上面的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
返回一行带有colA=0
的table
我的问题是:我怎么能 (i) 在动态列表规范中使用--a z.select的等效项
%jdbc
SELECT *
FROM db.table
WHERE colA='${Value=0,z.select(<variable_containing_list of tuples>)}'
LIMIT 1
期望的结果:动态表单(默认值0,变量的选项列表)
或 (ii)定义并重用范围为整个笔记本的动态列表
啊哈!动态表单的值由齐柏林飞艇上下文输出
步骤1:使用
%python
解释器和put
在变量中创建动态表单,例如value_choice
:第2步:在一些
%jdbc
段落中,说“段落1_1”,使用变量:注意类型不匹配。你可能需要为你的选择或可乐投下价值
步骤3(可选):添加运行依赖项。在
%python
段中,添加行z.z.run("paragraph_1_1")
将在每次更新动态表单的值时重新运行该段相关问题 更多 >
编程相关推荐