齐柏林飞艇动态表单:如何将变量传递到动态表单或重用动态表单

2024-09-30 05:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在齐柏林飞艇中,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=0table

我的问题是:我怎么能 (i) 在动态列表规范中使用--a z.select的等效项

%jdbc

SELECT *
FROM db.table
WHERE colA='${Value=0,z.select(<variable_containing_list of tuples>)}'
LIMIT 1

期望的结果:动态表单(默认值0,变量的选项列表)

或 (ii)定义并重用范围为整个笔记本的动态列表


Tags: from表单列表dbvaluetablewhereselect
1条回答
网友
1楼 · 发布于 2024-09-30 05:22:58

啊哈!动态表单的值由齐柏林飞艇上下文输出

步骤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段落中,说“段落1_1”,使用变量:

%jdbc

SELECT *
FROM db.table
WHERE colA={value_choice}
LIMIT 1

注意类型不匹配。你可能需要为你的选择或可乐投下价值

步骤3(可选):添加运行依赖项。在%python段中,添加行z.z.run("paragraph_1_1")将在每次更新动态表单的值时重新运行该段

相关问题 更多 >

    热门问题